要素图层不显示,但要素 table 显示

Feature Layer does not display but the Feature table does display

我是 ArcGIS javascript 的新手,我修改了 ArcGIS Developers 中的示例之一,试图在底图上显示一些行车路线。我还生成了 table 条路线。 table 显示,所以我认为这意味着添加了路线图层但路线未显示在地图上。代码如下所示。任何帮助将不胜感激!

编辑:

我发现我可以使用 url http:.../MapServer 将路线显示为 ArcGISDynamicMapServiceLayer 并且我可以使用 url 生成特征 table http:.../MapServer/0。我想我需要对路线使用 FeatureLayer 以便我可以突出显示与用户选择的 table 中的行对应的路线。 FeatureLayer Sample 的其中一个样本说

This sample demonstrates how to add a basic feature layer to a map. At a minimum, the FeatureLayer must point to a valid feature service hosted on ArcGIS Server or ArcGIS Online or be constructed with a Feature Collection object.

我的理解是路线要素被设置为地图服务,而不是要素服务。这可能是我的问题吗?一些 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();
            }
        });
      });

您尝试添加到地图的几何图层不是图层,而是服务。所以它可能在某处失败并出现错误。

尝试删除 "map.addLayer(geometryLayer);" 行,让我知道发生了什么。

该代码不共享您正在使用的实际 URL 的详细信息。如果您尝试使用地图服务 url(url 以 http...MapServer/ 结尾)创建要素层。这是不可能的。您需要具有以图层 ID 结尾的特定图层 url、url 才能创建要素图层。这可能是个问题。

编辑: 您可以从 MapService 的 Layer 之一创建 FeatureLayer。 但是,url 需要是 [map service url]/[layerid]。其中 layerid 是层的 number/index。