最近因为工作需要,领导要我将51地图API开发的一个应用迁移到百度地图,或者说用百度地图API进行重写,实现同样的功能。我先是把现有的这个51地图的应用了解了一下,然后就试着用百度地图做一些demo,最后就自己动手参照原来的应用的功能,用百度地图实现了一下。下面就给大家介绍一下,百度地图API开发的一些基础技术。

首先,百度地图API的官方首页是:http://dev.baidu.com/wiki/static/index.htm,上面介绍了很多详细的信息,各种版本的API,成功案例,还有在线帮助文档,当然了这些文档也可以下载下来离线查阅。在web中使用百度地图API进行开发,主要是用到百度地图JavaScript版,也就是用JS进行开发。百度地图封装了具体实现的细节,我们作为程序员,只要按照百度地图的API说明文档,结合实例代码,进行开发就可以了。

首先看一下百度地图的Hello World。

操作步骤:

1、建立一个HTML页面,导入百度地图API的JS

[javascript] view plaincopy
  1. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>

2、在页面的body部分,插入一个地图容器

[html] view plaincopy
  1. <div style="width:520px;height:340px;border:1px solid gray" id="container"></div>

3、键入以下代码,浏览该页面,一个最简单的实例就OK了。

[javascript] view plaincopy
  1. <script type="text/javascript">
  2. var map = new BMap.Map("container");            // 创建Map实例
  3. var point = new BMap.Point(116.404, 39.915);    // 创建点坐标
  4. map.centerAndZoom(point,15);                    // 初始化地图,设置中心点坐标和地图级别。
  5. </script>

主要是有几个概念,就是物体的标注,是通过经纬度来定位的,北纬多少°多少′多少″,东经多少°多少′多少″,这样就能够精确的定位。但是在从51地图迁移到百度地图的时候,遇到了一个问题就是,坐标定位不准的问题,当时也想了很多办法,比如设置一个统一的偏离值来进行坐标的矫正,但是实验后发现一个坐标准了,另一个不一定也是按照同样的规则进行偏移。后来就想百度是否提供了转换坐标系或者直接就是从其它地图系统坐标转换的接口,经过网上的一番搜索,最后发现了两种方法,经过测试发现,这两种方法实现的效果是一样的,都是把原来的GPS地位的坐标转换成了百度地图的坐标(之所以出现坐标偏移的现象,百度官方的解释是根据国家要求需要对地图数据进行加密,百度采用了某种算法,进行了二次加密,所以偏移不统一),这里分享一下具体的方法。

操作步骤:

1、在页面head部分,导入百度坐标转换接口API

[javascript] view plaincopy
  1. <script type="text/javascript" src="http://dev.baidu.com/wiki/static/map/API/examples/script/convertor.js"></script>

2、在js函数里面,键入如下代码,通过回调函数获得p的坐标

[javascript] view plaincopy
  1. BMap.Convertor.translate(ggPoint,2,function(p){
  2. //ggPoint是转换前的坐标,比如51地图坐标;2是转换参数,代表是51地图,0-4有效,代表不同的地图系统
  3. });

这里再附录一下http接口:http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.397428&y=39.90923&callback=BMap.Convertor.cbk_7594
通过x跟y的数值,返回结果坐标是通过base64加密的(读者可以自己试一试)。

附一个asp的动态读取数据库并加载到baidu Map的简单例子。

[plain] view plaincopy
  1. <div id="container">
  2. <div id="leftBar" class="leftBar">
  3. <center><h4>当前在线单位<font color=red>(<%=rs_kf(0)%>)</font></h4></center>
  4. <script src="http://www.yz91.net/Map2/kefu/kf/index.asp"></script>
  5. </div>
  6. <div id="centerBar" class="centerBar">
  7. <div id="mapDiv" style="width:100%; height:100%;"></div>
  8. </div>
  9. <div id="rightBar" class="rightBar">
  10. <div>
  11. <center><h4>最新招聘信息</h4></center>
  12. <ul id="demo1" style="list-style:none;width:100%;margin-left:5px;padding:0;">
  13. <%
  14. Set conn1 = Server.CreateObject("ADODB.Connection")
  15. constr1="Provider=MSDAORA.1;Password=xxx;User ID=yyy;Data Source=orcl;Persist Security Info=True"
  16. conn1.Open constr1
  17. Dim rs_oracle,strSql_oracle
  18. strSql_oracle="select acb200,acb210,AAB004,ACB216,ACB221||'-'||ACB222,ACB211,ACB212,ACB213,ACB21r,AAC011,NVL(ACC034,ACC214) DY,AAE004,AAE005,aae036,substr(aae020,0,3) from v_cb2021 where substr(aae020,0,3)='xxx'or substr(aae020,0,3)='xxx' or substr(aae020,0,3)='xxx' or substr(aae020,0,3)='xxx' order by aae030 desc"
  19. set rs_oracle=conn1.Execute(strSql_oracle)
  20. %>
  21. <%
  22. Do While Not rs_oracle.Eof
  23. %>
  24. <%
  25. url="http://www.yz91.net/Company/JobDeital/"& rs_oracle("ACB200")
  26. %>
  27. <li>
  28. <a href="<%=url%>" target="_blank"><font color="#0066ff"><%=rs_oracle("AAB004")%></font>   <font color=black><%=rs_oracle("ACB216")%></font></a>
  29. </li>
  30. <%
  31. rs_oracle.MoveNext
  32. Loop
  33. %>
  34. </ul>
  35. </div>
  36. <div id="demo2" style="width:0px;"></div>
  37. </div>
  38. </div>
[plain] view plaincopy
  1. <script type="text/javascript">
  2. <!--全局变量start-->
  3. var map;//地图容器
  4. var circle;//圆形区域
  5. var centerMaker;//圆形中心点覆盖物
  6. var centerMakerIcon ;//圆形中心点覆盖物图片
  7. var point;//坐标原点
  8. var datas=[];//数据源数组
  9. var myIcon;//图标
  10. <!--全局变量end-->
  11. //双击后重新定位
  12. function dblClickCallBack(Epoint){
  13. delCircleOverlay();
  14. point = Epoint;
  15. addOverlay(point,$("theradius").value);
  16. addCenterMarker(point);
  17. map.setCenter(point);
  18. }
  19. //添加覆盖物
  20. function addOverlay(point,radius){
  21. circle = new BMap.Circle(point,radius,{fillColor:"#123456", strokeColor:"#FF0000", strokeWeight: 2 ,fillOpacity: 0.1, strokeOpacity: 0.3});
  22. map.addOverlay(circle);
  23. }
  24. //添加中心覆盖物
  25. function addCenterMarker(point){
  26. centerMaker = new BMap.Marker(point,{icon: centerMakerIcon});
  27. map.addOverlay(centerMaker);
  28. }
  29. //删除覆盖物
  30. function delCircleOverlay(){
  31. map.removeOverlay(circle);
  32. map.removeOverlay(centerMaker);
  33. }
  34. //通过ip获取地址
  35. function myFun(result){
  36. var cityName = result.name;
  37. //map.setCenter(cityName);
  38. point = map.getCenter();
  39. }
  40. //初始化地图
  41. function initMap(){
  42. map=new BMap.Map("mapDiv");
  43. p1=119.41372;
  44. p2=32.39425;
  45. point=new BMap.Point(p1,p2);
  46. map.centerAndZoom(point,15);
  47. map.enableScrollWheelZoom();//支持鼠标滚轮
  48. map.enableKeyboard();//支持键盘操作
  49. map.disableDoubleClickZoom();//禁用双击放大
  50. map.setDraggingCursor("crosshair");//设置拖拽地图时的鼠标指针样式
  51. var opts = {anchor: BMAP_ANCHOR_TOP_RIGHT, offset: new BMap.Size(10, 10)};
  52. map.addControl(new BMap.NavigationControl(opts)); //添加地图导航面板
  53. centerMakerIcon = new BMap.Icon("images/poin01.png",new BMap.Size(24, 24));
  54. myIcon = new BMap.Icon("images/centerPoi.gif",new BMap.Size(24, 24));
  55. var myCity = new BMap.LocalCity(); //ip定位
  56. myCity.get(myFun);
  57. map.centerAndZoom(point,15);
  58. delCircleOverlay();
  59. addOverlay(point,1000);//初始化半径为1千米的圆
  60. addCenterMarker(point);//添加圆心中央的图片
  61. initData();//初始化地图数据
  62. map.addEventListener("dblclick",function(e){
  63. dblClickCallBack(e.point);
  64. });
  65. $("theradius").οnchange=function(){
  66. dblClickCallBack(point);
  67. $("spanRadius").innerHTML=$("theradius").value/1000;
  68. }
  69. }
  70. function initData(){
  71. <%
  72. Dim conn,strConn
  73. Set conn=Server.CreateObject("ADODB.Connection")
  74. strConn="Provider=MSDAORA.1;Password=xxx;User ID=yyy;Data Source=orcl;Persist Security Info=True"
  75. conn.Open strConn
  76. Dim rs,strSql
  77. strSql="select * from V_MAPZP where 1=1"
  78. if(request("AAB301")<>"") then
  79. p1=Split(trim(request("AAB301")),",")(0)
  80. p2=Split(trim(request("AAB301")),",")(1)
  81. qy=Split(trim(request("AAB301")),",")(2)
  82. strSql=strSql+" and ACB200 like "+"'%"&qy&"%'"
  83. end if
  84. if(request("ZPGW")<>"") then
  85. gw=trim(request("ZPGW"))
  86. strSql=strSql+" and ZPGW like "+"'%"&gw&"%'"
  87. end if
  88. set rs=conn.Execute(strSql)
  89. %>
  90. var p1="<%=p1%>";
  91. var p2="<%=p2%>";
  92. var point;
  93. if(p1==0&&p2==0){
  94. point=new BMap.Point(119.41372,32.39425);
  95. }else{
  96. point=new BMap.Point(p1/100000,p2/100000);
  97. }
  98. //map.centerAndZoom(point,15);
  99. //delCircleOverlay();
  100. //addOverlay(point,1000);//初始化半径为1千米的圆
  101. //addCenterMarker(point);//添加圆心中央的图片
  102. var myCity = new BMap.LocalCity(); //ip定位
  103. myCity.get(myFun);
  104. map.centerAndZoom(point,15);
  105. delCircleOverlay();
  106. addOverlay(point,1000);//初始化半径为1千米的圆
  107. addCenterMarker(point);//添加圆心中央的图片
  108. <%
  109. i=0
  110. Do While Not rs.Eof
  111. %>
  112. var ggPoint= new BMap.Point(<%=rs("LNG")%>/100000,<%=rs("LAT")%>/100000);
  113. BMap.Convertor.translate(ggPoint,2,function(p){
  114. var marker = new BMap.Marker(p,{icon: myIcon});
  115. map.addOverlay(marker);
  116. marker.setLabel(new BMap.Label("<%=rs("AAB004")%>",{offset:new BMap.Size(25,2)}));
  117. var opts = {
  118. width : 260,     // 信息窗口宽度
  119. height: 0,     // 信息窗口高度
  120. title : "<b>企业信息</b>"  // 信息窗口标题
  121. }
  122. var html="<div align=left>名称:<%=rs("AAB004")%></div>";
  123. var html=html+"<div align=left>联系人:<%=rs("AAE004")%> 电话:<%=rs("AAE005")%></div>";
  124. var html=html+"<div align=left>地址:<%=rs("AAE006")%></div>";
  125. var html=html+"<div align=center>";
  126. var html=html+"<a class=ORG href=http://www.www.com"+<%=right(rs("ACB200"),14)%>+" target=_blank>招聘信息</a></div>";
  127. var infoWindows = new BMap.InfoWindow(html, opts);  // 创建信息窗口对象
  128. marker.addEventListener("click", function(){
  129. this.openInfoWindow(infoWindows);
  130. });
  131. });
  132. <%
  133. i= i + 1
  134. rs.MoveNext
  135. Loop
  136. %>
  137. }

转载于:https://www.cnblogs.com/guwei4037/p/5588628.html

百度地图LBS应用开发代码相关推荐

  1. 浅谈百度地图的简单开发最后收官之实现导航功能(五)

    这篇是高仿百度地图的最后一篇了,今天主要来实现百度地图的导航的功能,并且该导航还自带语音播报功能,然后最后对整个百度地图开发过程遇到的问题进行一些列举,并给出一些解决的办法,可能总结的不是很齐全,希望 ...

  2. 浅谈百度地图的简单开发再续前缘之公交,地铁路线检索查询(六)

    关于百度地图的简单开发前段时间,写过一个小系列的博客关于百度地图的基本地图,定位,全景,导航等功能做了简单的介绍.从今天开始又将准备一期有关百度地图的POI检索的等一列查询功能,如城市检索,周边检索, ...

  3. 百度地图对应天气城市代码

    由于项目用到天气查询,给的接口只能传入一个城市代码 定位使用百度地图,因为百度地图给的城市代码不是我想要的天气城市代码,所以自己组装了一个json自己使用,现在记录下来,希望可以帮助到你们 packa ...

  4. 地图标注源码 php,jQuery百度地图自定义标注信息代码

    jQuery百度地图自定义标注信息代码是一款简单实用的百度地图api标注联系地址名称电话等信息代码. new BaiduMap({ id: "container2", title: ...

  5. iOS百度地图的相关开发(一)

    2019独角兽企业重金招聘Python工程师标准>>> 我是最近接触的百度读图开发,百度地图的相关sdk api开发写的很简单,有很多都是写的不是很详细,但是如果我们想深究就会遇到很 ...

  6. 百度地图LBS云存储自定义poi热点

    无疑在地图扩展开发上面百度地图是个不错的选择,但是鉴于牛逼的百度api技术论坛和惊人的问题回复速度真是想死的心都有.所有在这里把已经研究出来的东西写出来,希望后人能绕过百度这个大坑.这里只说明代码实现 ...

  7. 百度地图离线API开发(真正的离线开发)

    公司现在做的一个项目本来用的是google离线地图,但是发现谷歌的地图数据很久没更新数据了,中国的城市发展这么快,好多地方地图和现实都对不上了.发现百度地图数据更新挺快的(呵呵,毕竟是国产的吗),最后 ...

  8. 浅谈百度地图的简单开发之引入基本地图以及修改地图样式(一)

    今天,想给大家带来一个基于百度地图官方开放的API开发的高仿百度地图的Demo(还称不上是一个APP),基本实现了百度地图的几大核心功能,百度地图中的基本地图,百度地图的定位,百度地图的全景显示,百度 ...

  9. 百度地图api离线开发(示例源代码)

    相关教程:               1.如何搭建WEB离线地图开发环境               2.下载离线地图数据(金字塔瓦片数据)               3.离线地图二次开发接口(离 ...

最新文章

  1. 2021年大数据Hive(七):Hive的开窗函数
  2. C机顶盒开发实战常用初始化类型:数组、结构、指针
  3. Maven学习-目录结构
  4. cv2.error: OpenCV(4.5.2) : -1 : error: (-5:Bad argument) in function ‘rectangle‘
  5. 二叉树数据结构和算法
  6. Hadoop单机环境搭建整体流程
  7. oracle 判断字段相等,但类型不同引起的性能问题
  8. 接外包项目的几点技巧
  9. Python常用软件包,python使用的软件
  10. 存储珍贵的数据和资源的好选择,铁威马NAS F2-221折腾体验
  11. 超好用的两款作图工具,用起来~~~
  12. Amlogic 4K UI显示
  13. python 批量处理图片文件(做到图片不变形)
  14. OpenCV基础入门【C++及python语言】
  15. linux服务器安装字体库
  16. 利用clipboardJs 点击按钮复制文本
  17. 传智播客技术社区_播客与网络技术的未来
  18. SQL Pretty Printer美化SQL工具
  19. Java使用Itext5与html模板生成pdf并支持下载
  20. linux 鸟哥私房菜 从0到1 笔记(五)

热门文章

  1. 室内眩光测量UGR测试系统
  2. javaWeb项目跑起来吧
  3. requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题
  4. [译]GitHub应对1.28宕机事故的前前后后
  5. 计算机用户名的数值数据是什么,计算机数据最基本的单位是什么?
  6. suest:跨模型比较与广义豪斯曼检验
  7. grpc双向流 python_gRPC Golang/Python使用
  8. 【周年福利Round1】一文看破Swift枚举本质
  9. 信息化与业务流程再造
  10. “华为号”,决定穿越计算光年