C#的百度地图开发(四)前端显示与定位
有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API。下面是示例代码。
前端代码
- <%@ 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中,其代码如下
- 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中还封装了全景图的函数。
下面看一下后端代码
- 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定位
C#的百度地图开发(四)前端显示与定位的更多相关文章
- [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
一个. 百度地图城市位置和POI搜索知识 上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
标签: Android百度地图API Key 分类: Android 百度地图开发(2) 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...
- Android studio 百度地图开发(3)地图导航
Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Android studio 百度地图开发(2)地图定位
Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Android 百度地图开发之一(Hello BaiDu Map)
之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...
- C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
原文:C#的百度地图开发(三)依据坐标获取位置.商圈及周边信息 我们得到了百度坐标,现在依据这一坐标来获取相应的信息.下面是相应的代码 public class BaiduMap { /// < ...
- C#的百度地图开发(一)发起HTTP请求
原文:C#的百度地图开发(一)发起HTTP请求 百度地图的开发文档中给出了很多的事例,而当用到具体的语言来开发时,又会有些差异.我是使用C#来开发的.在获取相应的数据时,需要通过URL传值,然后获取相 ...
- 【百度地图开发之二】基于Fragment的地图框架的使用
写在前面的话: [百度地图开发之二]基于Fragment的地图框架的使用(博客地址:http://blog.csdn.net/developer_jiangqq),转载请注明. Author:hmji ...
- 调用百度地图开发平台的JavascriptAPI实现将市县位置转换成坐标
最近的项目要做的地图比较多,有的还比较复杂,而地图用到的坐标,上网找json文件更是良莠不齐的.真是让人伤脑筋,后来突然想到了百度地图开发平台,没想到真的有对应的API哦,谢天谢地!!!下面说一下完整 ...
随机推荐
- iOS学习——UI基础UIButton(七)
前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件 ...
- MyEclipse-6.5注冊码生成器源代码
打开MyEclipse新建一个Javaproject,然后新建类,粘贴例如以下代码,就可以生成MyEclipse的注冊码 import java.io.BufferedReader; import j ...
- STM8S EEPROM 操作
STM8S 内置EEPROM,对于非常大须要带记忆的产品来说,是个非常好的资源,下面是我个人摸索出来的,而且验证OK,大家如须要可放心使用. #define EEPROMADDR0X000 ((u32 ...
- 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)
RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...
- ASP.NET、WinForm - 判断整个页面文本框是否为空
foreach(Control ctrl in Page.Controls) { foreach(Control childc in ctrl.Controls) { switch(childc.Ge ...
- Linux版EPUB阅读器
Linux版EPUB阅读器 如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了.专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口.但是如果你非要在电脑上打开电子书的话,那么 ...
- UVA 565 565 Pizza Anyone? (深搜 +位运算)
Pizza Anyone? You are responsible for ordering a large pizza for you and your friends. Each of th ...
- reduce个数究竟和哪些因素有关
reduce的数目究竟和哪些因素有关 1.我们知道map的数量和文件数.文件大小.块大小.以及split大小有关,而reduce的数量跟哪些因素有关呢? 设置mapred.tasktracker.r ...
- iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观
/* 程序过程: 1.创建一个根视图,一个二级视图 2,根视图NavigationItem.title = Root 二级视图NavigationItem.title = Secon ...
- CentOS7 下linux不能上网解决方法,centos7 eth0 没有ip,IP突然丢失
CentOS7 下linux不能上网解决方法 在CentOS VMware下安装好linux后,发现有时不能直接联网,特分享下总结出来的经验,希望对新手有用 工具/原料 XP系统 VMware.Wo ...