• 百度地图(33)-GL 路径规划


    1.  三维 GL库中的路径规划功能和 二维中的区别不大,连调用方式都类似。

    直接上代码,至于要获取路径的查询结果,这里就没有写,请参考官网地址。

    其中支持驾驶、公交、步行、骑行模式。

    1  *  http://lbsyun.baidu.com/jsdemo.htm#sCaculateDriveTime
    2  *  http://lbsyun.baidu.com/jsdemo.htm#uWalkNavPanel
    3  *  http://lbsyun.baidu.com/jsdemo.htm#tBusLngLatSearch

    2. 代码

     1 function searchRoute(){
     2   var routing;
     3   switch (routeType) {
     4     case "drive":
     5       routing = new BMapGL.DrivingRoute(map,{
     6         renderOptions :{
     7           map:map,
     8           autoViewport: true
     9         }
    10       });
    11       break;
    12     case "bus":
    13       routing = new BMapGL.BusLineSearch(map,{
    14         renderOptions :{
    15           map:map,
    16           autoViewport: true
    17         },
    18         intercityPolicy:BMAP_INTERCITY_POLICY_EARLY_START,
    19 
    20         transitTypePolicy:BMAP_TRANSIT_TYPE_POLICY_AIRPLANE
    21 
    22       });
    23       break;
    24     case "walk":
    25       routing = new BMapGL.WalkingRoute(map,{
    26         renderOptions :{
    27           map:map,
    28           autoViewport: true
    29         }
    30       });
    31       break;
    32     // case "ride":
    33     //   routing = new BMapGL.RidingRoute(map,{
    34     //     renderOptions :{
    35     //       map:map,
    36     //       autoViewport: true
    37     //     }
    38     //   });
    39       break;
    40   }

    3. 代码中的其它地方,有针对性的更换了起始和终止点的图标,并替换了路线的颜色。

     1 var startIcon = new BMapGL.Icon('../img/start.png', new BMapGL.Size(60,60));
     2 
     3   var endIcon = new BMapGL.Icon('../img/end.png', new BMapGL.Size(48,48));
     4 
     5   var startMarker = new BMapGL.Marker(startPt,{icon:startIcon});
     6 
     7   var endMarker = new BMapGL.Marker(endPt,{icon:endIcon});
     8 
     9 
    10   routing.search(startPt,endPt);
    11 
    12   // let routeResult = routing.getResults();
    13   //
    14   // console.log(routeResult);
    15 
    16   routing.setPolylinesSetCallback(function (result) {
    17     routing.clearResults();
    18     map.clearOverlays();
    19 
    20     map.addOverlay(startMarker);
    21     map.addOverlay(endMarker);
    22 
    23     var points = [];
    24     result[0].getPath().map(function (item) {
    25       points.push(new BMapGL.Point(item.lng,item.lat));
    26     });
    27     var polyline = new BMapGL.Polyline(points,{strokeColor:"#f608f2",strokeWeight:5,strokeOpacity:0.5});
    28     map.addOverlay(polyline);
    29   });
    30 
    31   routing.setMarkersSetCallback(function(result){
    32     var startMarker = new BMapGL.Marker(result[0].marker.point,{icon:startIcon});
    33     map.addOverlay(startMarker);
    34 
    35     var endMarker = new BMapGL.Marker(result[1].marker.point,{icon:endIcon});
    36     map.addOverlay(endMarker);
       });

    4. 页面显示

    4. 源码地址

    https://github.com/WhatGIS/bdMap

     
  • 相关阅读:
    Unittest单元测试
    关于压力机设备的一些题
    原生 JS 实现 HTML 转 Markdown ,(html2md.js 或 html2markdown.js)
    【滚动更新】C++ 八股文选集(没代码,纯应试)
    【Example】C++ STL 常用容器概述
    权限接口写法
    使用vuecli3创建项目
    vue通过路由控制来实现的权限管理
    【更新中】程序设计实习笔记
    kserve predict api v2
  • 原文地址:https://www.cnblogs.com/googlegis/p/14707354.html
Copyright © 2020-2023  润新知