要素图层不显示,但要素 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。
我是 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。