百度地图绘制多段 驾车路线

比眉伴天荒 2022-10-18 00:50 327阅读 0赞

百度地图绘制多段 驾车路线

直接上代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>百度地图绘制驾车途经点路线图</title>
  6. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=3c3eb86a72b9af267d7432a4159768dd"></script>
  7. <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script>
  8. </head>
  9. <body>
  10. <div id="">
  11. <p>坐标点:<input type='text' id="pointStr" placeholder="坐标点(开始/途经点/终点) 坐标点之间用竖杠分割(如:109.27729623,35.0843510|109.276876,35.0804703)" style="width: 81.25rem;height: 2.5rem;" /></p>
  12. </div>
  13. <p><input type='button' value='开始画线' onclick='run();' /></p>
  14. <div style="width:1400px;height:600px;border:1px solid gray" id="container"></div>
  15. <script type="text/javascript"> var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(113.288386,23.139859),20); map.enableScrollWheelZoom(true); // 滚轮缩放 map.enableContinuousZoom(); //启用地图惯性拖拽,默认禁用 map.addControl(new BMap.NavigationControl( { type : BMAP_NAVIGATION_CONTROL_ZOOM, //缩放控件类型 仅包含缩放按钮 anchor : BMAP_ANCHOR_TOP_LEFT, //左上角 offset : new BMap.Size(1,1) //进一步控制缩放按钮的水平竖直偏移量 } )); map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件 map.addControl(new BMap.ScaleControl()); // 添加比例尺控件 map.addControl(new BMap.OverviewMapControl()); //添加缩略地图控件 // var myP1 = new BMap.Point(109.27729623387252,35.08435108922867); // var myP2 = new BMap.Point(109.27687667087184,35.08047031893331); // var myP3 = new BMap.Point(109.16293867684635,34.8374516358238); // var myP4 = new BMap.Point( 109.08492109954132,34.824928484264824); // var myP5 = new BMap.Point(113.301513,23.129129); window.run = function (){ var mapPoint=[]; var pointStr=$("#pointStr").val(); if(pointStr!=""&&pointStr!="undefind"){ var point=pointStr.split("|") point.forEach((point)=>{ var co=point.split(",") var myP1 = new BMap.Point(parseFloat(co[0]),parseFloat(co[1])); mapPoint.push(myP1); }) } map.clearOverlays(); var newArray=group(mapPoint) // alert(JSON.stringify(newArray)) newArray.forEach((newPoint,index)=>{ var driving = new BMap.DrivingRoute(map); //创建驾车实例 // driving.search(myP1, myP4); //第一个驾车搜索 driving.search(newPoint[0], newPoint[newPoint.length-1]); driving.setSearchCompleteCallback(function(){ var pts = driving.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组 var polyline = new BMap.Polyline(pts); map.addOverlay(polyline); newPoint.forEach((point,index)=>{ var m = new BMap.Marker(point); map.addOverlay(m); var lab= new BMap.Label("目标点",{ position:point}); map.addOverlay(lab); }) // var m1 = new BMap.Marker(myP1); //创建3个marker // var m2 = new BMap.Marker(myP2); // var m3 = new BMap.Marker(myP3); // var m4 = new BMap.Marker(myP4); // // var m5 = new BMap.Marker(myP5); // map.addOverlay(m1); // map.addOverlay(m2); // map.addOverlay(m3); // map.addOverlay(m4); // // map.addOverlay(m5); // var lab1 = new BMap.Label("起点",{position:myP1}); //创建3个label // var lab2 = new BMap.Label("途径点1",{position:myP2}); // var lab3 = new BMap.Label("途径点2",{position:myP3}); // var lab4 = new BMap.Label("终点",{position:myP4}); // // var lab5 = new BMap.Label("终点",{position:myP5}); // map.addOverlay(lab1); // map.addOverlay(lab2); // map.addOverlay(lab3); // map.addOverlay(lab4); // // map.addOverlay(lab5); setTimeout(function(){ map.setViewport(newPoint); //调整到最佳视野 // map.setViewport([myP1,myP2,myP3,myP4]); //调整到最佳视野 },1000); }); }) //清除地图上所有的覆盖物 } function group(array) { let index = 0; let newArray = []; while(index < array.length) { newArray.push(array.slice(index, index+2)); index++ } return newArray; } </script>
  16. </body>
  17. </html>

发表评论

表情:
评论列表 (有 0 条评论,327人围观)

还没有评论,来说两句吧...

相关阅读

    相关 地图自定义点规划路线

    所谓自定义多点规划路线,就是从服务器下载多点的坐标,标注在百度地图上,在按照一定顺序连接规划路线。 (由于本人也是实习小白,所以有做错的,费事麻烦的欢迎大神指出,让我少走点弯

    相关 通过地图API绘制经纬度map

    通过百度的API来绘制经纬度map相比自己算坐标绘图来说,效率提升的不是一点半点,而且也符合多数人的使用习惯(应该有不少同学都用过百度地图查询信息),接下来不废话,先看一下效果