ArcGIS API for javascript4.3——RouteTask

功能实现:

RouteTask路径规划,在图层(GraphicsLayer)上添加停靠点,计算停靠点之间得路线,以LineSymbol实现路线展示

代码详解:

引用部分:

 

"esri/Map",
      "esri/views/MapView",
      "esri/Graphic",
      "esri/layers/GraphicsLayer",
      "esri/tasks/RouteTask",
      "esri/tasks/support/RouteParameters",
      "esri/tasks/support/FeatureSet",
      "esri/symbols/SimpleMarkerSymbol",
      "esri/symbols/SimpleLineSymbol",
      "esri/Color",
      "esri/core/urlUtils",
      "dojo/on",
      "dojo/domReady!"

route要素服务器:

 urlUtils.addProxyRule({
        urlPrefix: "route.arcgis.com",
        proxyUrl: "/sproxy/"
      });
  var routeTask = new RouteTask({
        url: "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"
      });
urlUtils.addProxyRule避免引用服务器是出现登陆情况,图层来自

 关键代码:

var routeParams = new RouteParameters({
        stops: new FeatureSet(),
        outSpatialReference: { // autocasts as new SpatialReference()
          wkid: 3857
        }
      });
 new FeatureSet()获取feature,在通过feature获取Graphic数组,graphic里有symbol

   当地图被点击时,事件监听器调用函数addStop(),该函数在点击位置添加一个SimpleMarkerSymbol作为停止。该功能还在Route Parameter中添加点作为停止,并检查是否存在2个以上,路由通过调RouteTask.solve函数解决,然后将RouteParameter传递给求解函数。

 function addStop(event) {
   var stop = new Graphic({
          geometry: event.mapPoint,
          symbol: stopSymbol
        });
        routeLyr.add(stop);
   routeParams.stops.features.push(stop);
        if (routeParams.stops.features.length >= 2) {
          routeTask.solve(routeParams).then(showRoute);
        }
      }

showRoute回调函数获取结果对象中存储的routeResult,并对路由结果符号系统应用SimpleLineSymbol,然后将RouteResult添加到图形层中

 function showRoute(data) {
        var routeResult = data.routeResults[0].route;
        routeResult.symbol = routeSymbol;
        routeLyr.add(routeResult);
      }

 

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_Mathison

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值