问题描述:
应用有个底图,是包含多个图层的基础图层(切片图层)
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])