FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 8468|回复: 6
打印 上一主题 下一主题

FineUI与百度地图简单示例

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-28 17:04:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wanghenan 于 2013-10-29 08:50 编辑

先上图


附上HTML代码
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Map.aspx.cs" Inherits="EmptyProjectNet40.Map" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6.      <style type="text/css">
  7.         .columnpanel
  8.         {
  9.             margin-right: 5px;
  10.         }
  11.         .rowpanel
  12.         {
  13.             margin-bottom: 5px;
  14.         }
  15.         
  16.     </style>
  17.     <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=C2c1257ee55b0cdb7d7df0ae4c3f4521"></script>
  18. </head>
  19. <body>
  20.     <form id="form1" runat="server">
  21.     <x:PageManager ID="PageManager1" runat="server" />
  22.     <x:Panel ID="Panel2" runat="server" Height="500px" Width="900px" ShowBorder="True"
  23.         BodyPadding="5px" Layout="Column" ShowHeader="True" Title="百度地图示例">
  24.         <Items>
  25.             <x:Panel ID="Panel4" ColumnWidth="75%" EnableBackgroundColor="true" runat="server" CssClass="columnpanel"
  26.                 BodyPadding="5px" ShowBorder="true" ShowHeader="true" Layout="Fit" Height="464px" Title="地图">
  27.                 <Toolbars>
  28.                   <x:Toolbar ID="Toolbar1" runat="server" Position="Top">
  29.                   <Items>
  30.                         <x:Button runat="server" ID="Button1" Text="移动当前城市" EnablePostBack="false"
  31.                             OnClientClick="panTo();">
  32.                         </x:Button>
  33.                   </Items>
  34.                   </x:Toolbar>
  35.                 </Toolbars>
  36.                 <Items>
  37.                 <x:ContentPanel runat="server" ShowBorder="True" ShowHeader="false">
  38.                    <div id="container1" style="width:100%; height:400px; background-color:Blue;"></div>
  39.                 </x:ContentPanel>   
  40.                 </Items>
  41.             </x:Panel>
  42.             <x:Panel ID="Panel3" ColumnWidth="25%" EnableBackgroundColor="true" runat="server"
  43.                 BodyPadding="5px" ShowBorder="true" ShowHeader="true" Height="464px" Title="坐标">
  44.                 <Items>
  45.                     <x:Grid ID="Grid1" Title="表格" PageSize="4" ShowBorder="true" ShowHeader="False"
  46.                 runat="server" Height="427px" IsDatabasePaging="true">
  47.                         <Columns>
  48.                             <x:BoundField Width="60px" DataField="CityName" DataFormatString="{0}" HeaderText="地区" />
  49.                             <x:BoundField Width="60px" DataField="pointX" DataFormatString="{0}" HeaderText="经度" />
  50.                             <x:BoundField Width="60px" DataField="pointY" DataFormatString="{0}" HeaderText="纬度" />
  51.                         </Columns>
  52.             </x:Grid>
  53.                 </Items>
  54.             </x:Panel>
  55.         </Items>
  56.     </x:Panel>
  57.     </form>
  58.     <script type="text/javascript">
  59.         var map;
  60.         var gridClientID = '<%= Grid1.ClientID %>';
  61.         function onReady() {
  62.             map = new BMap.Map("container1");          // 创建地图实例   
  63.             var point = new BMap.Point(116.404, 39.915);  // 创建点坐标   
  64.             map.centerAndZoom(point, 15);
  65.             map.addEventListener("click", showInfo);  //注册单击事件
  66.         }
  67.         //移动到当前城市
  68.         function panTo() {
  69.             var myCity = new BMap.LocalCity();
  70.             myCity.get(myFun);
  71.         }
  72.         
  73.         function myFun(result) {
  74.             var cityName = result.name;
  75.             map.setCenter(cityName);
  76.             //alert(cityName);
  77.         }
  78.         
  79.         function showInfo(e) {
  80.             //可以把获取到的经度和纬度保存起来,或者动态添加到Grid中
  81.             //alert(e.point.lng + ", " + e.point.lat);
  82.             calcGridSummary(e);
  83.         }

  84.         function calcGridSummary(e) {
  85.             var grid = X(gridClientID);
  86.             var view = grid.getView(), store = grid.getStore(), storeCount = store.getCount();
  87.             store.add(new Ext.data.Record({
  88.                 'citname': 1,
  89.                 'pointX': e.point.lng,
  90.                 'pointY': e.point.lat
  91.             }));
  92. //            // 为合计行添加自定义样式(隐藏序号列、复选框列,取消 hover 和 selected 效果)
  93. //            Ext.get(view.getRow(storeCount)).addClass('mygrid-row-summary');
  94. //            Ext.get(view.getRow(storeCount + 1)).addClass('mygrid-row-summary');
  95.         }   
  96.      </script>
  97. </body>
  98. </html>
复制代码
本人菜鸟一枚,大侠请飘过,很简单的示例,目前这里面还有一问题,就是点击地图获取坐标想添加到Grid里面,没显示


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2013-10-28 17:31:31 | 只看该作者
"点击地图获取坐标想添加到Grid里面"这个道理上很简单:
1. 点击地图获取坐标,应该是JavaScript里实现的把,发起一个PostBack请求;
2. 在PostBack请求中,更新表格数据源即可。

自定义回发参考:http://fineui.com/demo/#/demo/other/custom_postback.aspx
板凳
 楼主| 发表于 2013-10-28 19:36:48 | 只看该作者
本帖最后由 wanghenan 于 2013-10-28 19:38 编辑

非常感谢,已经实现了,保存坐标到Grid表格中,然后双可以移动到指定的经度和纬度
更新前台代码:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Map.aspx.cs" Inherits="EmptyProjectNet40.Map" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6.      <style type="text/css">
  7.         .columnpanel
  8.         {
  9.             margin-right: 5px;
  10.         }
  11.         .rowpanel
  12.         {
  13.             margin-bottom: 5px;
  14.         }
  15.         
  16.     </style>
  17.     <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=C2c1257ee55b0cdb7d7df0ae4c3f4521"></script>
  18. </head>
  19. <body>
  20.     <form id="form1" runat="server">
  21.     <x:PageManager ID="PageManager1" runat="server" />
  22.     <x:Panel ID="Panel2" runat="server" Height="500px" Width="900px" ShowBorder="True"
  23.         BodyPadding="5px" Layout="Column" ShowHeader="True" Title="百度地图示例">
  24.         <Items>
  25.             <x:Panel ID="Panel4" ColumnWidth="75%" EnableBackgroundColor="true" runat="server" CssClass="columnpanel"
  26.                 BodyPadding="5px" ShowBorder="true" ShowHeader="true" Layout="Fit" Height="464px" Title="地图">
  27.                 <Toolbars>
  28.                   <x:Toolbar ID="Toolbar1" runat="server" Position="Top">
  29.                   <Items>
  30.                         <x:Button runat="server" ID="Button1" Text="移动当前城市" EnablePostBack="false"
  31.                             OnClientClick="panTo();">
  32.                         </x:Button>
  33.                   </Items>
  34.                   </x:Toolbar>
  35.                 </Toolbars>
  36.                 <Items>
  37.                 <x:ContentPanel runat="server" ShowBorder="True" ShowHeader="false">
  38.                    <div id="container1" style="width:100%; height:400px; background-color:Blue;"></div>
  39.                 </x:ContentPanel>   
  40.                 </Items>
  41.             </x:Panel>
  42.             <x:Panel ID="Panel3" ColumnWidth="25%" EnableBackgroundColor="true" runat="server"
  43.                 BodyPadding="5px" ShowBorder="true" ShowHeader="true" Height="464px" Title="坐标">
  44.                 <Items>
  45.                     <x:Grid ID="Grid1" Title="表格" PageSize="4" ShowBorder="true" ShowHeader="False"
  46.                 runat="server" Height="427px" IsDatabasePaging="true"  EnableRowDoubleClickEvent="true"  OnRowDoubleClick="Grid1_RowClick">
  47.                         <Columns>
  48.                             <x:BoundField Width="55px" DataField="CityName" DataFormatString="{0}" HeaderText="地区" />
  49.                             <x:BoundField Width="75px" DataField="pointX" DataFormatString="{0}" HeaderText="经度" />
  50.                             <x:BoundField Width="75px" DataField="pointY" DataFormatString="{0}" HeaderText="纬度" />
  51.                         </Columns>
  52.             </x:Grid>
  53.                 </Items>
  54.             </x:Panel>
  55.         </Items>
  56.     </x:Panel>
  57.     </form>
  58.     <script type="text/javascript">
  59.         var map;
  60.         var gridClientID = '<%= Grid1.ClientID %>';
  61.         var gc;
  62.         function onReady() {
  63.             map = new BMap.Map("container1");          // 创建地图实例   
  64.             var point = new BMap.Point(116.404, 39.915);  // 创建点坐标   
  65.             map.centerAndZoom(point, 15);
  66.             map.addEventListener("click", showInfo);  //百度API注册单击事件
  67.             gc = new BMap.Geocoder();   
  68.         }
  69.         //移动到当前城市
  70.         function panTo() {
  71.             var myCity = new BMap.LocalCity();
  72.             myCity.get(myFun);
  73.         }
  74.         //移动到某个经度和纬度
  75.         function PanToCity(x,y) {
  76.             map.panTo(new BMap.Point(x, y));   
  77.         }
  78.         function myFun(result) {
  79.             var cityName = result.name;
  80.             map.setCenter(cityName);
  81.         }
  82.         //百度API点击回调事件
  83.         function showInfo(e) {
  84.             //可以把获取到的经度和纬度保存起来,或者动态添加到Grid中
  85.             var pt = e.point;
  86.             gc.getLocation(pt, function (rs) {
  87.                 var addComp = rs.addressComponents;
  88.                 __doPostBack(addComp.city + "," + e.point.lng + "," + e.point.lat, 'specialkey');//获取坐标简单拼装发送给服务端
  89.             });

  90.         }  
  91.      </script>
  92. </body>
  93. </html>
复制代码

后台代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Data;
  8. using Newtonsoft.Json.Linq;
  9. using FineUI;

  10. namespace EmptyProjectNet40
  11. {
  12.     public partial class Map : System.Web.UI.Page
  13.     {
  14.         protected void Page_Load(object sender, EventArgs e)
  15.         {
  16.             if (!IsPostBack)
  17.             {
  18.                 GetData();
  19.             }
  20.             else
  21.             {
  22.                 if ( Request.Form["__EVENTARGUMENT"] == "specialkey")
  23.                 {
  24.                     string req = Request.Form["__EVENTTARGET"];
  25.                     string[] point=req.Split(',');
  26.                   
  27.                     if (point.Length > 1)
  28.                     {
  29.                         JObject defaultObj = new JObject();
  30.                         defaultObj.Add("CityName", point[0]);
  31.                         defaultObj.Add("pointX", point[1]);
  32.                         defaultObj.Add("pointY", point[2]);
  33.                         DataTable dbt = (DataTable)Session["KEY_FOR_DATASOURCE_SESSION"];
  34.                         dbt.Rows.Add(new object []{point[0],point[1],point[2]});
  35.                         Session["KEY_FOR_DATASOURCE_SESSION"] = dbt;
  36.                         Grid1.DataSource = dbt;
  37.                         Grid1.DataBind();
  38.                     }
  39.                 }
  40.             }
  41.         }
  42.         protected void Grid1_RowClick(object sender, FineUI.GridRowClickEventArgs e)
  43.         {
  44.             DataTable dbt = (DataTable)Session["KEY_FOR_DATASOURCE_SESSION"];
  45.             DataRow dr = dbt.Rows[e.RowIndex];
  46.             string x = Convert.ToString(dr["pointX"]);
  47.             string y = Convert.ToString(dr["pointY"]);
  48.             PageContext.RegisterStartupScript("PanToCity(" + x + "," + y + ");");
  49.         }
  50.         private  DataTable dt;
  51.         public void GetData()
  52.         {
  53.             dt = new DataTable();
  54.             dt.Columns.Add("CityName");
  55.             dt.Columns.Add("pointX");
  56.             dt.Columns.Add("pointY");
  57.             dt.Rows.Add(new object[] { "北京市", "116.222", "39.2222" });
  58.             dt.Rows.Add(new object[] { "武汉市", "114.333", "30.222"});
  59.             Grid1.DataSource = dt;
  60.             Grid1.DataBind();
  61.             Session["KEY_FOR_DATASOURCE_SESSION"] = dt;
  62.         }
  63.     }
  64. }
复制代码

最后还是来一张图





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5#
发表于 2013-10-29 08:26:24 | 只看该作者
本帖最后由 erp8@live.cn 于 2013-10-29 09:18 编辑

SCRIPT5: 拒绝访问。
getscript, 行1 字符26711
SCRIPT5009: “BMap”未定义
Map.aspx, 行228 字符13
===请问运行后出现以上错误?应如何解决?---设计ie安全降低一下就好了@----------再次感谢!
6#
发表于 2013-11-1 22:04:41 | 只看该作者
怎样在地图上标记刚才选择的位置,或双击GRID,在地图上标记位置?
7#
 楼主| 发表于 2013-11-4 14:10:12 | 只看该作者
zoukaix 发表于 2013-11-1 22:04
怎样在地图上标记刚才选择的位置,或双击GRID,在地图上标记位置?

http://developer.baidu.com/map/jsdemo.htm#d0_4  这里面有很多API方法,你说的这个实现也很简单
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-22 09:31 , Processed in 0.049580 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表