现在的位置: 首页 > 综合 > 正文

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

2013年04月03日 ⁄ 综合 ⁄ 共 2000字 ⁄ 字号 评论关闭

问题描述:

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

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

抱歉!评论已关闭.