2016-05-24 5 views
0

Я новичок в ArcGIS javascript и изменил один из образцов на ArcGIS Developers, чтобы попытаться показать некоторые маршруты движения на верхней карте базы. Я также создаю таблицу маршрутов. В таблице показано, что я думаю, что это означает, что добавлен слой маршрута, но маршруты не отображаются на карте. Код показан ниже. Любая помощь будет оценена!Функциональный слой не отображается, но таблица функций отображается

РЕДАКТИРОВАТЬ:

Я обнаружил, что может отображать маршруты как ArcGISDynamicMapServiceLayer с использованием URL http:.../MapServer, и я могу генерировать таблицу функций с использованием URL http:.../MapServer/0. Я думаю, мне нужно использовать FeatureLayer для маршрутов, поэтому я могу выделить маршрут, соответствующий строке в таблице, которую пользователь выбирает. Один из образцов в FeatureLayer Sample сказал, что

Этот образец демонстрирует, как добавить базовый функциональный слой к карте. На уровне , FeatureLayer должен указывать на действительную службу функций , размещенную на ArcGIS Server или ArcGIS Online, или быть сконструирован с объектом Feature Collection .

Мое понимание - это функция маршрута, настроенная как услуга карты, а не как функция. Может ли это быть моей проблемой? Некоторые из примеров FeatureLayer используют слои, хранящиеся в MapService (например, Gas Price Data), поэтому я не уверен, что это имеет значение.

 var map, stateBaseMap, geometryLayer, routeFeature, myFeatureTable, 
     stateBaseMapUrl, geometryLayerUrl, routeFeatureUrl; 

    require([ "esri/map", 
      "esri/layers/ArcGISTiledMapServiceLayer", 
      "esri/tasks/GeometryService", 
      "esri/layers/FeatureLayer", 
      "esri/dijit/FeatureTable", 
       "dijit/layout/ContentPane", 
       "dijit/layout/BorderContainer", 
       "esri/geometry/Extent", 
       "esri/graphicsUtils", 
       "esri/tasks/query", 
       "dojo/dom", 
       "dojo/parser", 
       "dojo/ready", 
       "dojo/on"], 
    function(Map, 
      ArcGISTiledMapServiceLayer, 
      GeometryService, 
      FeatureLayer, 
      FeatureTable, 
      ContentPane, 
      BorderContainer, 
      Extent, 
      graphicsUtils, 
      Query, 
       dom, 
       parser, 
       ready, 
       on) { 
     parser.parse(); 

     ready(function(){ 
      esri.config.defaults.io.proxyUrl = "/llr/llrproxy"; 
      esri.config.defaults.io.alwaysUseProxy = false; 
      esri.config.defaults.io.corsDetection = false; 
      stateBaseMapUrl = document.getElementById("shipment_stateBaseMapServiceURL").value; 
      geometryLayerUrl = document.getElementById("shipment_geometryServiceURL").value; 
      routeFeatureUrl = document.getElementById("shipment_routeLayerURL").value; 

      map = new Map("map"); 
      stateBaseMap = new ArcGISTiledMapServiceLayer(stateBaseMapUrl); 
      map.addLayer(stateBaseMap); 
      geometryLayer = new GeometryService(geometryLayerUrl); 
      map.addLayer(geometryLayer); 
      routeFeature = new FeatureLayer(routeFeatureUrl, { 
                mode : FeatureLayer.MODE_SNAPSHOT, 
                outFields : [ "*" ], 
                visible:true, 
                id : "routeFeature" 
               }); 
      map.addLayer(routeFeature); 
      on(routeFeature, "load", function(){ 
       loadTable(); 
       }); 

      function loadTable(){ 
        myFeatureTable = new FeatureTable({ 
        featureLayer : routeFeature, 
        map : map, 
        editable: false, 
        fieldInfos: [ 
         { 
         name: 'ORIGIN', 
         alias: 'Entry State' 
         }, 
         { 
         name: 'ROUTE_DESC', 
         alias: 'Route Description' 
         }, 
         { 
         name: 'DESTNATION', 
         alias: 'Exit State' 
         } 
        ] 
        }, 'myTableNode'); 

        myFeatureTable.startup(); 
      } 
     }); 
     }); 

ответ

1

Код не содержит информации о фактическом URL, который вы используете. Если вы пытаетесь создать FeatureLayer с URL-адресом службы карты (URL-адрес, заканчивающийся http ... MapServer /). Это невозможно. У вас должен быть определенный URL-адрес уровня, url, который заканчивается идентификатором уровня для создания FeatureLayer. Это может быть проблемой.

EDIT: Вы можете создать FeatureLayer из одного из слоев из MapService. , но URL-адрес должен быть [URL-адрес службы службы]/[layerid]. где layerid - число/индекс слоя.

0

Геометрический слой, который вы пытаетесь добавить на карту, не является слоем, это сервис. так что это может быть ошибка где-то с ошибками.

Попробуйте удалить "map.addLayer (geometryLayer);" и дайте мне знать, что произойдет.

+0

Я удалил 'map.addLayer (geometryLayer);' line, и это не помогло. Я использовал отладчик Firefox, чтобы пройти через него, и нет ошибок, появляющихся в javascript. – ponder275

+0

Вот что мне нужно было знать. Они меняют маршруты на службу функций, которые, как мы надеемся, исправит проблему. Если вы поместите свой комментарий в качестве ответа, я бы выбрал его как решение. – ponder275