您的位置:首页 > 编程语言 > Java开发

arcgis java script api 3.2 中 通过route 查询后,无法显示路径的问题

2012-12-13 02:34 525 查看
问题描述:

应用有个底图,是包含多个图层的基础图层(切片图层)

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])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: