博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#的百度地图开发(四)前端显示与定位
阅读量:5240 次
发布时间:2019-06-14

本文共 3789 字,大约阅读时间需要 12 分钟。

在《》中已经得到坐标的位置信息,有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API。下面是示例代码。

前端代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewMap.aspx.cs" Inherits="TEST.ViewMap" %>    地图    
注:

(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) {            ///载入地图            ///纬度值            ///经度值            ///地图容器ID,一般为Div的Id.                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定位,具体请参看后文《 》。

转载请注明出处http://blog.csdn.net/xxdddail/article/details/42706113。

转载于:https://www.cnblogs.com/sparkleDai/p/7604975.html

你可能感兴趣的文章
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
解决php -v查看到版本与phpinfo()版本不一致问题
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
MySQL中的隔离级别和悲观锁及乐观锁示例
查看>>
手机端h5 ajax 上传图片支持微信内置浏览器
查看>>
Redmine
查看>>
HtmlEditor常用模式
查看>>
Another app is currently holding the yum lock; waiting for it to exit.. yum被锁定无法使用
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
第一次博客
查看>>
Java Map 常见用法举例
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
Linux vi/vim
查看>>
zookeeper适用场景:分布式锁实现
查看>>