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

来源:互联网 发布:java web表单设计器 编辑:程序博客网 时间:2024/05/17 09:36

问题描述:

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

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])