问题描述:
应用有个底图,是包含多个图层的基础图层(切片图层)
root.mainLayerURL = "http://115.238.43.203/arcgis/rest/services/V32/TATP3D/MapServer"
定义了一个路径查询使用的道路图层(动态图层)
root.routeMapURL = "http://115.238.43.203/arcgis/rest/services/V32/TATP3D_ROUTE/MapServer"
定义了一个route服务
root.routeTaskURL = "http://115.238.43.203/arcgis/rest/services/V32/TATP3D_ROUTE/NAServer/Route"
在做显示的时候出现如下问题:
如果在map里面只显示 root.routeMapURL 图层,并且通过root.routeTaskURL 进行route后,代码可以显示 路径
如果在map 里面加入 root.mainLayerURL 图层,则不能显示路径,只能显示2个点位置.
解决办法:
1.都要使用同样的图层格式.我只试过通用使用 动态图层.不知道 通用都用切片图层是否可以
2.addLayer的方法应该是 先 路径图层,然后是基础图层.而不是我原来理解的 先基础图层,再路径图层.
代码如下:
# 路径路由查询 root.myMap.destroy() root.myMap = new esri.Map("map_div",logo: false) #注意这里addLayer的顺序 root.myMap.addLayer(new esri.layers.ArcGISDynamicMapServiceLayer(routeMapURL)) root.myMap.addLayer(new esri.layers.ArcGISDynamicMapServiceLayer(mainLayerURL)) routeTask = new esri.tasks.RouteTask(routeTaskURL) # //setup the route parameters routeParams = new esri.tasks.RouteParameters() routeParams.stops = new esri.tasks.FeatureSet() routeParams.returnRoutes = true routeParams.returnDirections = false # routeParams.outSpatialReference = {"wkid":102100} stopSymbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CROSS).setSize(15) stopSymbol.outline.setWidth(4) routeSymbol = new esri.symbol.SimpleLineSymbol().setColor(new dojo.Color([255,0,0.5])).setWidth(5) # 点击的时候调用 dojo.connect root.myMap , "onClick" , (evt) -> stop = root.myMap.graphics.add(new esri.Graphic(evt.mapPoint, stopSymbol)) routeParams.stops.features.push(stop) if (routeParams.stops.features.length >= 2) routeTask.solve(routeParams) lastStop = routeParams.stops.features.splice(0, 1)[0] # 路由查询结束 dojo.connect routeTask, "onSolveComplete", (solveResult) -> # console.debug(solveResult.directions) root.myMap.graphics.add(solveResult.routeResults[0].route.setSymbol(routeSymbol)) # 发生错误的时候 dojo.connect routeTask, "onError", (evt) -> alert("An error occured\n" + err.message + "\n" + err.details.join("\n")) routeParams.stops.features.splice(0, 0, lastStop) root.myMap.graphics.remove(routeParams.stops.features.splice(1, 1)[0])