分享
 
 
 

C#的百度地图开发(四)前端显示与定位

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的javaScript的API。下面是示例代码。

前端代码

[html] view plaincopy

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewMap.aspx.cs" Inherits="TEST.ViewMap" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>地图</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="/js/map.js"></script> <script src="/js/jquery.js"></script> <script type="text/Javascript" src="http://api.map.baidu.com/api?v=2.0&ak=XXXXXXXXXXXX"></script> </head> <body> <div id="normal_map"></div> <input type="hidden" runat="server" id="HiddenCoord" /> <input type="hidden" runat="server" id="HiddenAddress" /> </body> </html> <script type="text/javascript"> $(document).ready(function () { var w = $(window).width(); var h = $(document).height(); var coord = $('#<%=HiddenCoord.ClientID%>').val().split(','); var lat = coord[0]; var lng = coord[1]; var address = $('#<%=HiddenAddress.ClientID%>').val(); $("#normal_map").CSS({ "width": w + "px", 'height': h + 'px' }); MapApi.LoadLocationMap(lat, lng, 'normal_map', "<p>" + address + "</p>"); }); </script>

注:

(1).script中http://api.map.baidu.com后面的ak是申请的key,与前面文章中所说的key一致。

(2).引用了jquery的库。

(3).如果还引用了jquery.mobile的库,以适应移动端使用的,记得要将div设置相应的高度和宽度,不然可能会显示一片空白。因为jquery.mobile在渲染时会对页面进行适配的处理。

(4).载入地图的部分封装到了map.js中,其代码如下

[javascript] view plaincopy

var MapApi = (function () { return { LoadLocationMap: function (lat, lng, containerId, showText) { ///<summary>载入地图</summary> ///<param name="lat">纬度值</param> ///<param name="lng">经度值</param> ///<param name="containerId">地图容器ID,一般为Div的Id.</param> var map = new BMap.Map(containerId); // 创建Map实例 var point = new BMap.Point(lng, lat); // 创建点坐标 var marker = new BMap.Marker(point); // 创建标注 map.addOverlay(marker); // 将标注添加到地图中 map.centerAndZoom(point, 15); map.enableScrollWheelZoom(); //启用滚轮放大缩小 var opts = { width: 50, // 信息窗口宽度 height: 30, // 信息窗口高度 title: showText, // 信息窗口标题 enableMessage: false,//设置允许信息窗发送短息 message: showText } var infoWindow = new BMap.InfoWindow("", opts); // 创建信息窗口对象 map.openInfoWindow(infoWindow, point); //开启信息窗口 }, LoadMap: function (lat, lng, panoramaContainerId, normalMapContainerId) { //全景图展示 var panorama = new BMap.Panorama(panoramaContainerId); panorama.setPosition(new BMap.Point(lng, lat)); //根据经纬度坐标展示全景图 panorama.setPov({ heading: -40, pitch: 6 }); panorama.addEventListener('position_changed', function (e) { //全景图位置改变后,普通地图中心点也随之改变 var pos = panorama.getPosition(); map.setCenter(new BMap.Point(pos.lng, pos.lat)); marker.setPosition(pos); }); //普通地图展示 var mapOption = { mapType: BMAP_NORMAL_MAP, maxZoom: 18, drawMargin: 0, enableFulltimeSpotClick: true, enableHighResolution: true } var map = new BMap.Map(normalMapContainerId, mapOption); var testpoint = new BMap.Point(lng, lat); map.centerAndZoom(testpoint, 18); var marker = new BMap.Marker(testpoint); marker.enableDragging(); map.addOverlay(marker); marker.addEventListener('dragend', function (e) { panorama.setPosition(e.point); //拖动marker后,全景图位置也随着改变 panorama.setPov({ heading: -40, pitch: 6 }); }); } } })();

注:该JS中还封装了全景图的函数。

下面看一下后端代码

[html] view plaincopy

public partial class ViewMap : System.Web.UI.Page { PRotected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { InitLoad(); } } private void InitLoad() { Coordinate coordinate = new Coordinate("39.92", "116.46"); CoordLocationResult coordLocationResult = BaiduMap.FetchLocation(coordinate); HiddenAddress.Value = coordLocationResult.result.formatted_address; HiddenCoord.Value = String.Format("{0},{1}", coordLocationResult.result.location.lat, coordLocationResult.result.location.lng); } }

注:

(1).通过BaiduMap.FetchLocation得到坐标的定位信息。

(2).将得到的地址和坐标赋值到隐藏域中,以便前端使用JS来读取。

测试结果如下图

这样就实现了坐标的前端定位。当然如果有需要,还可以将某段时间内获取的坐标点在地图上画出轨迹来,这个可以参考百度地图的说明。

这是通过坐标来定位的,而坐标的定位一般都是在移动设备上,那如果在PC端呢?这个就需要使用到IP定位

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有