Ich erkunde derzeit die ArcGIS JavaScript-API. Ich habe meine eigenen Kartendienste und Funktionsdienste auf meinem lokalen Server. Ich möchte den FeatuerLayer verwenden, um Features auf der Karte auszuwählen und hervorzuheben. Wenn ich jedoch meinen Feature-Service hinzufüge, wird der folgende Fehler angezeigt.
TypeError: Unable to draw graphic (geometry:null, symbol:null): _14 is undefined
Ich kann nicht herausfinden, was dies sein könnte, und ich bin nicht sicher, ob der Feature-Layer zur Karte hinzugefügt wurde oder nicht. Wie kann ich überprüfen, ob es hinzugefügt wurde? Ich habe versucht, eine dojo.connect-Methode mit dem FeatureLayer mit einem onClick-Ereignis zu verwenden. Aber das scheint nicht zu funktionieren. Habe den Code unten platziert
Code:
esri.config.defaults.io.proxyUrl = "proxy.ashx";
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("esri.layers.FeatureLayer");
dojo.require("esri.tasks.query");
var map;
var selectionToolbar;
var infoTemplate = new esri.InfoTemplate();
infoTemplate.setTitle("${ROADNAME}");
infoTemplate.setContent("<b>ROAD NAME: </b>${LINK_ID}<br/>" + "<b>CAT</b>${CAT}</b>");
function init() {
try {
var initExtent = new esri.geometry.Extent({
"xmin": 103.55,
"ymin": 1.13,
"xmax": 104.16,
"ymax": 1.56,
"spatialReference": {
"wkid": 4326
}
});
map = new esri.Map("map", {
extent: esri.geometry.geographicToWebMercator(initExtent)
});
var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");
//my map service layer
var basemap_sing = new esri.layers.ArcGISTiledMapServiceLayer("http://karthikpc:8399/arcgis/rest/services/Carriage_Mercantor/MapServer", {
displayLevels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
});
// my feature layer which i am not able to use
var featureLayer = new esri.layers.FeatureLayer("http://karthikpc:8399/arcgis/rest/services/Carriage_Mercantor/FeatureServer", {
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
infoTemplate: infoTemplate,
outFields: ["*"]
});
map.addLayer(basemap);
map.addLayer(base_sing);
map.addLayer(featureLayer);
dojo.connect(map, "onLoad", initSelectToolbar);
dojo.connect(featureLayer."onClick", helloworld);
} catch (e) {
alert('An error has occurred: ' + e.message);
}
}
function helloworld() {
alert("hello world");
}
dojo.addOnLoad(init);
quelle
Ein FeatureLayer endet mit einer Ziffer, die eher ein Array-Konzept ist.
meine / service / url / points / hier
vs.
meine / feature / url / points / here / 0
Die erste URL verweist auf einen Dienst, der Funktionen von 1 bis X enthält. Während die zweite URL auf eine bestimmte Funktion innerhalb dieses Dienstes verweist.
Ich hoffe, das hilft...
quelle