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定位

目录
打赏
0
0
0
0
216
分享
相关文章
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
151 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
227 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
90 11
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
481 82
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
121 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
143 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
108 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
78 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
前端开发者狂喜!30K star开源组件库,界面美观度/开发速度双碾压!
嗨,大家好,我是小华同学。Layui 是一款开源前端 UI 组件库,具有极简设计、强大功能和卓越性能,支持布局、表单、表格、弹层等六大模块,组件高度可定制。它无需复杂构建工具,直接面向浏览器开发,极大提升开发效率与界面美观度。适合新手和老手,快来试试吧!

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等