2016-05-24 13 views
0

Ich bin neu in ArcGIS javascript und habe eines der Beispiele um ArcGIS Developers geändert, um zu versuchen, einige Fahrrouten oben auf einer Basiskarte anzuzeigen. Ich erzeuge auch eine Tabelle der Routen. Die Tabelle zeigt also an, dass der Routen-Layer hinzugefügt wurde, aber die Routen nicht auf der Karte angezeigt werden. Der Code ist unten gezeigt. Jede Hilfe wäre willkommen!Feature-Layer wird nicht angezeigt, aber die Feature-Tabelle zeigt

EDIT:

ich gefunden habe ich die Routen als ArcGISDynamicMapServiceLayer anzeigen kann über die URL http:.../MapServer und ich kann die Feature-Tabelle mit der URL http:.../MapServer/0 erzeugen. Ich denke, ich muss FeatureLayer für die Routen verwenden, damit ich die Route markieren kann, die der Zeile in der Tabelle entspricht, die der Benutzer auswählt. Eine der Stichproben unter FeatureLayer Sample sagte

Dieses Beispiel veranschaulicht, wie Sie eine grundlegende Feature-Layer zu einer Zuordnung hinzufügen. Unter muss der FeatureLayer mindestens auf einen gültigen Feature-Service verweisen, der auf ArcGIS Server oder ArcGIS Online gehostet wird, oder er kann mit einem Feature Collection-Objekt erstellt werden.

Mein Verständnis ist die Route Feature ist als ein Karten-Service, nicht als Feature-Service eingerichtet. Könnte das mein Problem sein? Einige der FeatureLayer Beispiele verwenden Layer, die auf einem MapService gespeichert sind (zB Gas Price Data), also bin ich mir nicht sicher, ob es wichtig ist.

 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(); 
      } 
     }); 
     }); 

Antwort

1

Der Code teilt nicht die Details der tatsächlichen URL, die Sie verwenden. Wenn Sie versuchen, einen FeatureLayer mit einer Karten-Service-URL zu erstellen (URL endet mit http ... MapServer /). Das ist nicht möglich. Sie benötigen die spezifische Layer-URL, URL, die mit der Layer-ID endet, um einen FeatureLayer zu erstellen. Das könnte ein Problem sein.

EDIT: Sie können eine FeatureLayer von einem der Layer aus einem MapService erstellen. Die URL muss jedoch [Karten-Service-URL]/[Layer-ID] sein. wobei die Layer-ID eine Nummer/ein Index der Ebene ist.

0

Der geometryLayer, den Sie der Karte hinzufügen möchten, ist kein Layer, sondern ein Dienst. Es könnte also irgendwo mit Fehlern versagen.

Versuchen Sie, "map.addLayer (geometryLayer)" zu entfernen. Linie und lassen Sie mich wissen, was passiert.

+0

Ich habe die 'map.addLayer (geometryLayer);' Zeile entfernt und es hat nicht geholfen. Ich benutzte den Debugger von Firefox, um es zu durchlaufen, und es sind keine Fehler im Javascript zu sehen. – ponder275

+0

Das musste ich wissen. Sie ändern die Routen auf einen Feature-Service, der das Problem hoffentlich beheben wird. Wenn Sie Ihren Kommentar als Antwort geben, möchte ich ihn als Lösung wählen. – ponder275