ArcGIS 9.3实现了REST的架构,开始支持RIA(富英特网应用),包括ArcGIS API for Flex、ArcGIS API for Silverlight、ArcGIS JavaScript API。RIA是一种前端的开发方式,而与后台ArcGIS Server的交互是通过REST API实现的。
REST的架构,简单的说就是把所有的资源和功能都抽象为一个URL地址,通过一个URL地址就能访问ArcGIS Server提供的资源服务或者功能服务。ArcGIS Server 10 REST API实现了路径分析、最近设施查询、服务区域分析(10之前只支持路径分析)。ArcGIS API for Flex、ArcGIS API for Silverlight、ArcGIS JavaScript API都实现了相应的task来调用网络分析的功能,方法都差不多,我们看一下Flex的例子。 flex/spark" pageTitle="Routing with the ArcGIS API for Flex"> 1) { routeTask.solve(routeParams); } } // Event handler after route solver excutes successfully private function solveCompleteHandler(event:RouteEvent):void { var routeResult:RouteResult = event.routeSolveResult.routeResults[0]; routeResult.route.symbol = routeSymbol; graphicsLayer.remove(lastRoute); lastResult = routeResult.route; graphicsLayer.add(lastRoute); } // Event handler after route solver excuetes unsuccessfully private function faultHandler(event:FaultEvent):void { Alert.show(event.fault.faultString + "\n\n" + event.fault.faultDetail, "Routing Error " + event.fault.faultCode); // remove last stop (or both stops if only two) if (stops.features.length style="triangle" mce_style="triangle"> 程序看得够多了,尽管是另一种开发方式,但是并不是那么陌生和不可理解。有两个地方特别指出,网络分析参数的设置比如U-Turn的类型、考虑哪些限制、是否考虑高速优先,包括stops、barriers都通过RouteParameters设置;计算的结果包括路径、方向提示通过RouteResult获取。
REST的架构,简单的说就是把所有的资源和功能都抽象为一个URL地址,通过一个URL地址就能访问ArcGIS Server提供的资源服务或者功能服务。ArcGIS Server 10 REST API实现了路径分析、最近设施查询、服务区域分析(10之前只支持路径分析)。ArcGIS API for Flex、ArcGIS API for Silverlight、ArcGIS JavaScript API都实现了相应的task来调用网络分析的功能,方法都差不多,我们看一下Flex的例子。 flex/spark" pageTitle="Routing with the ArcGIS API for Flex"> 1) { routeTask.solve(routeParams); } } // Event handler after route solver excutes successfully private function solveCompleteHandler(event:RouteEvent):void { var routeResult:RouteResult = event.routeSolveResult.routeResults[0]; routeResult.route.symbol = routeSymbol; graphicsLayer.remove(lastRoute); lastResult = routeResult.route; graphicsLayer.add(lastRoute); } // Event handler after route solver excuetes unsuccessfully private function faultHandler(event:FaultEvent):void { Alert.show(event.fault.faultString + "\n\n" + event.fault.faultDetail, "Routing Error " + event.fault.faultCode); // remove last stop (or both stops if only two) if (stops.features.length style="triangle" mce_style="triangle"> 程序看得够多了,尽管是另一种开发方式,但是并不是那么陌生和不可理解。有两个地方特别指出,网络分析参数的设置比如U-Turn的类型、考虑哪些限制、是否考虑高速优先,包括stops、barriers都通过RouteParameters设置;计算的结果包括路径、方向提示通过RouteResult获取。