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);
      }

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM