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

简介: 原文:C#的百度地图开发(四)前端显示与定位有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API。下面是示例代码。 前端代码   [html] view plaincopy           ...
原文: C#的百度地图开发(四)前端显示与定位

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

前端代码

 

[html]  view plaincopy在CODE上查看代码片派生到我的代码片
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewMap.aspx.cs" Inherits="TEST.ViewMap" %>  
  2.   
  3. <!DOCTYPE html>  
  4.   
  5.   
  6. <html xmlns="http://www.w3.org/1999/xhtml">  
  7. <head id="Head1" runat="server">  
  8.     <title>地图</title>  
  9.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  10.     <script src="/js/map.js"></script>  
  11.     <script src="/js/jquery.js"></script>  
  12.     <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=XXXXXXXXXXXX"></script>  
  13. </head>  
  14. <body>  
  15.     <div id="normal_map"></div>  
  16.     <input type="hidden" runat="server" id="HiddenCoord" />  
  17.     <input type="hidden" runat="server" id="HiddenAddress" />  
  18. </body>  
  19. </html>  
  20. <script type="text/javascript">  
  21.     $(document).ready(function () {  
  22.         var w = $(window).width();  
  23.         var h = $(document).height();  
  24.         var coord = $('#<%=HiddenCoord.ClientID%>').val().split(',');  
  25.         var lat = coord[0];  
  26.         var lng = coord[1];  
  27.         var address = $('#<%=HiddenAddress.ClientID%>').val();  
  28.         $("#normal_map").css({  
  29.             "width": w + "px",  
  30.             'height': h + 'px'  
  31.         });  
  32.         MapApi.LoadLocationMap(lat, lng, 'normal_map', "<p>" + address + "</p>");  
  33.   
  34.     });  
  35. </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在CODE上查看代码片派生到我的代码片
  1. var MapApi = (function () {  
  2.     return {  
  3.         LoadLocationMap: function (lat, lng, containerId, showText) {  
  4.             ///<summary>载入地图</summary>  
  5.             ///<param name="lat">纬度值</param>  
  6.             ///<param name="lng">经度值</param>  
  7.             ///<param name="containerId">地图容器ID,一般为Div的Id.</param>      
  8.             var map = new BMap.Map(containerId);            // 创建Map实例  
  9.             var point = new BMap.Point(lng, lat); // 创建点坐标  
  10.             var marker = new BMap.Marker(point);  // 创建标注  
  11.             map.addOverlay(marker);              // 将标注添加到地图中  
  12.             map.centerAndZoom(point, 15);  
  13.             map.enableScrollWheelZoom();                 //启用滚轮放大缩小  
  14.             var opts = {  
  15.                 width: 50,     // 信息窗口宽度  
  16.                 height: 30,     // 信息窗口高度  
  17.                 title: showText, // 信息窗口标题  
  18.                 enableMessage: false,//设置允许信息窗发送短息  
  19.                 message: showText  
  20.             }  
  21.             var infoWindow = new BMap.InfoWindow("", opts);  // 创建信息窗口对象  
  22.             map.openInfoWindow(infoWindow, point); //开启信息窗口      
  23.         },  
  24.         LoadMap: function (lat, lng, panoramaContainerId, normalMapContainerId) {  
  25.             //全景图展示  
  26.             var panorama = new BMap.Panorama(panoramaContainerId);  
  27.             panorama.setPosition(new BMap.Point(lng, lat)); //根据经纬度坐标展示全景图  
  28.             panorama.setPov({ heading: -40, pitch: 6 });  
  29.   
  30.             panorama.addEventListener('position_changed', function (e) { //全景图位置改变后,普通地图中心点也随之改变  
  31.                 var pos = panorama.getPosition();  
  32.                 map.setCenter(new BMap.Point(pos.lng, pos.lat));  
  33.                 marker.setPosition(pos);  
  34.             });  
  35.             //普通地图展示  
  36.             var mapOption = {  
  37.                 mapType: BMAP_NORMAL_MAP,  
  38.                 maxZoom: 18,  
  39.                 drawMargin: 0,  
  40.                 enableFulltimeSpotClick: true,  
  41.                 enableHighResolution: true  
  42.             }  
  43.             var map = new BMap.Map(normalMapContainerId, mapOption);  
  44.             var testpoint = new BMap.Point(lng, lat);  
  45.             map.centerAndZoom(testpoint, 18);  
  46.             var marker = new BMap.Marker(testpoint);  
  47.             marker.enableDragging();  
  48.             map.addOverlay(marker);  
  49.             marker.addEventListener('dragend', function (e) {  
  50.                 panorama.setPosition(e.point); //拖动marker后,全景图位置也随着改变  
  51.                 panorama.setPov({ heading: -40, pitch: 6 });  
  52.             });  
  53.         }  
  54.     }  
  55. })();  

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

 

下面看一下后端代码

 

[html]  view plaincopy在CODE上查看代码片派生到我的代码片
  1. public partial class ViewMap : System.Web.UI.Page  
  2.     {  
  3.         protected void Page_Load(object sender, EventArgs e)  
  4.         {  
  5.             if (!IsPostBack)  
  6.             {  
  7.                 InitLoad();  
  8.             }  
  9.         }  
  10.   
  11.         private void InitLoad()  
  12.         {  
  13.             Coordinate coordinate = new Coordinate("39.92", "116.46");  
  14.             CoordLocationResult coordLocationResult = BaiduMap.FetchLocation(coordinate);  
  15.             HiddenAddress.Value = coordLocationResult.result.formatted_address;  
  16.             HiddenCoord.Value = String.Format("{0},{1}",   
  17.                                               coordLocationResult.result.location.lat,   
  18.                                               coordLocationResult.result.location.lng);  
  19.         }  
  20.     }  

注:

 

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

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

测试结果如下图

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

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

目录
相关文章
|
20天前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
20 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
1月前
|
开发框架 前端开发 JavaScript
前端框架演进史:从HTML到现代化开发
前端框架演进史:从HTML到现代化开发
33 0
|
1月前
|
前端开发 开发者
探索前端技术的新趋势:Web组件化开发
【2月更文挑战第11天】 在这篇文章中,我们将深入探讨Web组件化开发的概念及其对前端开发领域的影响。不同于传统的摘要方式,我们通过一个故事来引入主题:想象在一个快速变化的数字世界里,有一座由各种小型、独立、可复用的建筑块构成的城市,每个建筑块都拥有独特的功能和风格,它们可以自由组合,创造出无限可能的城市景观。这座城市,就像是使用了Web组件化开发技术的前端项目。接下来,我们将详细探讨Web组件化开发的优势、实现方式以及面临的挑战,为前端开发者提供一个全面的视角来理解和应用这一重要的技术趋势。
62 5
|
2月前
|
缓存 前端开发 JavaScript
(10月最新) 前端图形学实战: 从零开发几何画板(vue3 + vite版)
(10月最新) 前端图形学实战: 从零开发几何画板(vue3 + vite版)
60 0
|
2月前
|
前端开发 JavaScript Java
从前端到后端:探索Web开发的技术演进
本文将介绍Web开发领域中前端和后端技术的演进过程。我们将从最初的静态网页开始,逐步探索动态网页、前后端分离、服务器端渲染等技术,以及流行的编程语言如Java、Python和C的应用。通过了解这些技术的发展,读者可以更好地理解Web开发的现状以及未来的趋势。
|
2月前
|
前端开发 NoSQL 关系型数据库
从前端到后端:探索全栈开发的无限可能
本文将介绍全栈开发的概念以及其在现代技术领域中的重要性。我们将深入探讨前端和后端开发的关联,并探索多种编程语言(如Java、Python、C、PHP、Go)以及数据库技术在全栈开发中的应用。通过本文,读者将了解到如何成为一名全栈开发人员,以及如何利用全栈开发的技能构建出强大且可扩展的应用程序。
|
3月前
|
前端开发 JavaScript 测试技术
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
|
2月前
|
前端开发 数据可视化 JavaScript
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
75 0
|
8天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
11天前
|
小程序 前端开发 JavaScript
小程序全栈开发:前端与后端的完美结合
【4月更文挑战第12天】本文介绍了小程序全栈开发,涵盖前端和后端的关键点。前端使用WXML和WXSS进行页面结构和样式设计,JavaScript处理逻辑及组件使用;后端采用Node.js等语言处理业务逻辑、数据库设计和API接口开发。前端与后端通过数据交互实现结合,采用前后端分离模式,支持跨平台运行。调试测试后,提交微信审核并上线运营。掌握前端后端结合是小程序成功的关键。