百度地图画出区域并获取区域坐标范围

转载自:http://blog.csdn.net/zzq900503/article/details/21714491

API原型 http://developer.baidu.com/map/jsdemo.htm#f0_7

效果如图:

源代码,新建为html可用:(注意  百度地图密钥需要自己的百度帐号开通申请一下)

[java] view plain copy

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  6. <style type="text/css">
  7. body, html{width: 100%;height: 100%;overflow: hidden;margin:0;}
  8. #allmap {margin-right: 300px;height: 100%;overflow: hidden;}
  9. #result {border-left:1px dotted #999;height:100%;width:295px;position:absolute;top:0px;right:0px;font-size:12px;}
  10. dl,dt,dd,ul,li{
  11. margin:0;
  12. padding:0;
  13. list-style:none;
  14. }
  15. p{font-size:12px;}
  16. dt{
  17. font-size:14px;
  18. font-family:"微软雅黑";
  19. font-weight:bold;
  20. border-bottom:1px dotted #000;
  21. padding:5px 0 5px 5px;
  22. margin:5px 0;
  23. }
  24. dd{
  25. padding:5px 0 0 5px;
  26. }
  27. li{
  28. line-height:28px;
  29. }
  30. </style>
  31. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度地图密钥"></script>
  32. <!--加载鼠标绘制工具-->
  33. <script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
  34. <link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />
  35. <!--加载检索信息窗口-->
  36. <script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
  37. <link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />
  38. <title>鼠标绘制工具</title>
  39. </head>
  40. <body>
  41. <div id="allmap" style="overflow:hidden;zoom:1;position:relative;">
  42. <div id="map" style="height:100%;-webkit-transition: all 0.5s ease-in-out;transition: all 0.5s ease-in-out;"></div>
  43. <div id="showPanelBtn" style="position:absolute;font-size:14px;top:50%;margin-top:-95px;right:0px;width:20px;padding:10px 10px;color:#999;cursor:pointer;text-align:center;height:170px;background:rgba(255,255,255,0.9);-webkit-transition: all 0.5s ease-in-out;transition: all 0.5s ease-in-out;font-family:‘微软雅黑‘;font-weight:bold;">显示检索结果面板<br/><</div>
  44. <div id="panelWrap" style="width:0px;position:absolute;top:0px;right:0px;height:100%;overflow:auto;-webkit-transition: all 0.5s ease-in-out;transition: all 0.5s ease-in-out;">
  45. <div style="width:20px;height:200px;margin:-100px 0 0 -10px;color:#999;position:absolute;opacity:0.5;top:50%;left:50%;" id="showOverlayInfo">此处用于展示覆盖物信息</div>
  46. <div id="panel" style="position:absolute;"></div>
  47. </div>
  48. </div>
  49. <div id="result">
  50. <dl>
  51. <dt>绘制工具功能</dt>
  52. <ul>
  53. <li><label><input type="radio" name="openClose1" onclick="drawingManager.open()"/>打开</label>  <label><input type="radio" name="openClose1" onclick="drawingManager.close()" checked="checked"/>关闭</label></li>
  54. </ul>
  55. </dd>
  56. <dt>是否进行线或面积的计算(单位米)</dt>
  57. <ul>
  58. <li><label><input type="radio" name="openClose" onclick="drawingManager.enableCalculate()"/>打开</label>  <label><input type="radio" name="openClose" onclick="drawingManager.disableCalculate()"  checked="checked"/>关闭</label></li>
  59. </ul>
  60. </dd>
  61. <dt>绘制功能</dt>
  62. <dd>
  63. <ul>
  64. <li>
  65. <label><input type="radio" name="drawmode" onclick="drawingManager.setDrawingMode(BMAP_DRAWING_MARKER)" checked="checked"/>画点</label>
  66. <input type="checkbox" id="isInfowindow"/> 是否带信息窗口
  67. </li>
  68. <li>
  69. <label><input type="radio" name="drawmode" onclick="drawingManager.setDrawingMode(BMAP_DRAWING_CIRCLE)"/>画圆</label>
  70. </li>
  71. <li>
  72. <label><input type="radio" name="drawmode" onclick="drawingManager.setDrawingMode(BMAP_DRAWING_POLYLINE)"/>画线</label>
  73. </li>
  74. <li>
  75. <label><input type="radio" name="drawmode" onclick="drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON)"/>画多边形</label>
  76. </li>
  77. <li>
  78. <label><input type="radio" name="drawmode" onclick="drawingManager.setDrawingMode(BMAP_DRAWING_RECTANGLE)"/>画矩形</label>
  79. </li>
  80. </ul>
  81. </dd>
  82. <dt>覆盖物操作</dt>
  83. <dd>
  84. <ul>
  85. <li>
  86. <input type="button" value="获取绘制的覆盖物个数" onclick="alert(overlays.length)"/>
  87. <input type="button" value="清除所有覆盖物" onclick="clearAll()"/>
  88. <input type="button" value="获取最后一个覆盖物信息" id="getLastOverLay"/>
  89. </li>
  90. </ul>
  91. </dd>
  92. </dl>
  93. </div>
  94. <script type="text/javascript">
  95. // 百度地图API功能
  96. var map = new BMap.Map(‘map‘);
  97. var poi = new BMap.Point(116.307852,40.057031);
  98. map.centerAndZoom(poi, 16);
  99. map.enableScrollWheelZoom();
  100. $("getLastOverLay").onclick = function(){
  101. if(overlays.length){
  102. alert(overlays[overlays.length - 1]);
  103. }else{
  104. alert("没有覆盖物");
  105. }
  106. }
  107. //信息窗口的内容定义
  108. var content = ‘<div style="margin:0;line-height:20px;padding:2px;">‘ +
  109. ‘地址:北京市海淀区上地十街10号<br/>电话:(010)59928888<br/>简介:百度大厦位于北京市海淀区西二旗地铁站附近,为百度公司综合研发及办公总部。‘ +
  110. ‘</div>‘;
  111. //创建带信息窗口的poi点
  112. var searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {
  113. title  : "百度大厦",      //标题
  114. width  : 290,             //宽度
  115. height : 105,              //高度
  116. panel  : "panel",         //检索结果面板
  117. enableAutoPan : true,     //自动平移
  118. searchTypes   :[
  119. BMAPLIB_TAB_SEARCH,   //周边检索
  120. BMAPLIB_TAB_TO_HERE,  //到这里去
  121. BMAPLIB_TAB_FROM_HERE //从这里出发
  122. ]
  123. });
  124. var overlays = [];
  125. //回调获得覆盖物信息
  126. var overlaycomplete = function(e){
  127. overlays.push(e.overlay);
  128. var result = "";
  129. result = "<p>";
  130. result += e.drawingMode + ":";
  131. if (e.drawingMode == BMAP_DRAWING_MARKER) {
  132. result += ‘ 坐标:‘ + e.overlay.getPosition().lng + ‘,‘ + e.overlay.getPosition().lat;
  133. if ($(‘isInfowindow‘).checked) {
  134. searchInfoWindow.open(e.overlay);
  135. }
  136. }
  137. if (e.drawingMode == BMAP_DRAWING_CIRCLE) {
  138. result += ‘ 半径:‘ + e.overlay.getRadius();
  139. result += ‘ 中心点:‘ + e.overlay.getCenter().lng + "," + e.overlay.getCenter().lat;
  140. }
  141. if (e.drawingMode == BMAP_DRAWING_POLYLINE || e.drawingMode == BMAP_DRAWING_POLYGON || e.drawingMode == BMAP_DRAWING_RECTANGLE) {
  142. result += ‘ 所画的点个数:‘ + e.overlay.getPath().length;
  143. }
  144. result += "</p>";
  145. $("showOverlayInfo").style.display = "none";
  146. $("panel").innerHTML += result; //将绘制的覆盖物信息结果输出到结果面板
  147. };
  148. var styleOptions = {
  149. strokeColor:"red",    //边线颜色。
  150. fillColor:"red",      //填充颜色。当参数为空时,圆形将没有填充效果。
  151. strokeWeight: 3,       //边线的宽度,以像素为单位。
  152. strokeOpacity: 0.8,    //边线透明度,取值范围0 - 1。
  153. fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
  154. strokeStyle: ‘solid‘ //边线的样式,solid或dashed。
  155. }
  156. //实例化鼠标绘制工具
  157. var drawingManager = new BMapLib.DrawingManager(map, {
  158. isOpen: false, //是否开启绘制模式
  159. enableDrawingTool: true, //是否显示工具栏
  160. drawingToolOptions: {
  161. anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
  162. offset: new BMap.Size(5, 5), //偏离值
  163. scale: 0.8 //工具栏缩放比例
  164. },
  165. circleOptions: styleOptions, //圆的样式
  166. polylineOptions: styleOptions, //线的样式
  167. polygonOptions: styleOptions, //多边形的样式
  168. rectangleOptions: styleOptions //矩形的样式
  169. });
  170. //添加鼠标绘制工具监听事件,用于获取绘制结果
  171. drawingManager.addEventListener(‘overlaycomplete‘, overlaycomplete);
  172. function $(id){
  173. return document.getElementById(id);
  174. }
  175. function clearAll() {
  176. for(var i = 0; i < overlays.length; i++){
  177. map.removeOverlay(overlays[i]);
  178. }
  179. overlays.length = 0
  180. }
  181. var isPanelShow = false;
  182. //显示结果面板动作
  183. $("showPanelBtn").onclick = showPanel;
  184. function showPanel(){
  185. if (isPanelShow == false) {
  186. isPanelShow = true;
  187. $("showPanelBtn").style.right = "230px";
  188. $("panelWrap").style.width = "230px";
  189. $("map").style.marginRight = "230px";
  190. $("showPanelBtn").innerHTML = "隐藏绘制结果信息<br/>>";
  191. } else {
  192. isPanelShow = false;
  193. $("showPanelBtn").style.right = "0px";
  194. $("panelWrap").style.width = "0px";
  195. $("map").style.marginRight = "0px";
  196. $("showPanelBtn").innerHTML = "显示绘制结果信息<br/><";
  197. }
  198. }
  199. </script>
  200. </body>
  201. </html>
  202. </script>

线、矩形等多边形的 坐标获取 需要根据 e.overlay.getPath().length,通过for循环获取

e.overlay.getPath()[0].lng    e.overlay.getPath()[0].lat

示例:

  for(var i = 0; i < overlays_lines.length; i++){//循环连线个数
           for(var j = 0; j < overlays_lines[i].getPath().length; j++){//循环每一个连线上的点个数
                var object = new Object();
                object.lnglatX = overlays_lines[i].getPath()[j].lng;
                object.lnglatY = overlays_lines[i].getPath()[j].lat;
                linelnglatArr.push(object);
            }  
      }

时间: 2024-11-05 04:55:10

百度地图画出区域并获取区域坐标范围的相关文章

滚动到指定元素的id处+当元素出现在浏览器显示区域就会自动加载

//滚动到指定元素的id处 如:$("#Exam82") function Jump() { var scroll_offset = $("#Exam82").offset();  //得到Exam82这个div层的offset,包含两个值,top和left $("body,html").animate({ scrollTop: scroll_offset.top  //让body的scrollTop等于Exam82的top,就实现了滚动 },

点击弹出层以外的区域隐藏弹出层

我们店显示弹出层后,想让其消失,但又不想添加“X”来关闭,可以使用点击弹出层以外的区域来让该层消失的办法.下面如代码: $(".btn3").click(function(e){ e.stopPropagation();//阻止事件向上冒泡 $(".con-share").removeClass("hide"); }) //显示弹出层 $(document).click(function(e){ if(!$(".con-share&qu

OSPF多区域配置;骨干区域与非骨干区域;ABR边界路由器;LSA和SPF算法

SPF:链路状态路由算法.基本用于OSPF中,但是要求路由器路由数据库足够大,因为链路状态信息包括很多内容,这也是一个缺点. OSPF是一种内部网关协议(IGP) OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内.在这里,路由域指一个自治区域(AS)在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的. 作为一种链路状态的路由

利用百度地图API,获取经纬度坐标

利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代码下载:http://files.cnblogs.com/zjfree/select_map.rar 利用百度地图API,获取经纬度坐标,布布扣,bubuko.com

获取鼠标坐标并且根据鼠标位置不同弹出不同内容

获取鼠标坐标,并且根据鼠标所在div弹出不同内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <head

第九十节,html5+css3pc端固定布局,底部区域,说明区域,版权区域

html5+css3pc端固定布局,底部区域,说明区域,版权区域 完成: HTML代码: <!--尾部--> <footer class="wei-bu"> <div class="wei-bu2"> <div class="yy dd1"> <h2>合作伙伴</h2> <hr> <ul> <li>途牛旅游网</li> <

jquery点击其他区域,该区域隐藏

大致效果是这样的:点击菜单出现蒙层,点击其他区域,该蒙层隐藏,很常见的一个效果,由于平时写整体的一个布局,写兄弟级用z-index控制就可以实现,这次遇到的情况是该别人的代码,对方代码都分模块了,不好直接加,如图:                                                                       点击非蒙层区域,该区域隐藏:css代码: body{ margin: 0; padding: 0; } .cor{ background: #D

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{ BMKCoordinateRegion region; region.center.latitude  = userLocation.location.coordinate.latitude; region.center.longitude = userLoca

Android——长按弹出菜单、获取当前所按的item的信息

ListView 中有多个选项,长按每个选项,都能弹出一个上下文菜单,并能获取所按选项的详细信息. 关键步骤: private static final int DELETE_ID = Menu.FIRST + 1;//使用Menu.FIRST常量而不使用其他常量的原因:程序封装的变量 用起来不占内存 程序读的快 不容易出错 private static final int EDIT_ID=Menu.FIRST + 2; private static final int VIEW_ID=Menu