网络分析

<mx:Script>

<![CDATA[

[Bindable]private var stops:FeatureSet = new FeatureSet([]);

[Bindable]private var barriers:FeatureSet = new FeatureSet([]);

[Bindable] private var lastRoute:Graphic;

private function mapClickHandler(event:MapMouseEvent):void

{

if (selectedBtn == addStopsBtn)

{

var stop:Graphic = new Graphic(event.mapPoint, stopSymbol);

inputsLayer.add(stop);

stops.features.push(stop);

}

else

{

var barrier:Graphic = new Graphic(event.mapPoint, barrierSymbol);

inputsLayer.add(barrier);

barriers.features.push(barrier);

}

if (stops.features.length > 1)

{

routeTask.solve(routeParams);

}

}

private function solveCompleteHandler(event:RouteEvent):void

{

var routeResult:RouteResult = event.routeSolveResult.routeResults[0];

lastRoute = routeResult.route;

}

]]>

</mx:Script>

<esri:RouteTask id="routeTask"

concurrency="last" requestTimeout="30" showBusyCursor="true"

solveComplete="solveCompleteHandler(event)" url="http://tasks.arcgisonline.com/ArcGIS/rest/services/NetworkAnalysis/ESRI_Route_NA/NAServer/Route"/>

<esri:RouteParameters id="routeParams" stops="{stops}" barriers="{barriers}"/>

<esri:Map mapClick="mapClickHandler(event)">

<esri:GraphicsLayer graphicProvider="{lastRoute}" symbol="{routeSymbol}"/>

<esri:GraphicsLayer id="inputsLayer"/>

</esri:Map>

在这个例子中,每次在地图上点击会添加一个停靠点或路障点,每次点击后都会调用RouteTask进行计算,计算的条件就是前面在地图上点击添加的停靠点及路障点;当然,由于设置了concurrency属性,因此只有最后一次调用可以返回结果。在这里顺便说一下concurrency属性,其实前面的那些功能类也都有这个属性,它是BaseTask基类的一个属性,它指示的是该功能是否允许多次调用,你可以选择多次调用、单次调用或者取消前面的调用仅执行最后一次调用。

下面让我们看一下路径分析的结果:

图 20 RouteTask的使用

7 Locator
原文地址:https://www.cnblogs.com/GISerp/p/3558444.html