Dojo-Parser und ein TypeError unter Verwendung der ArcGIS JS-API
Ich erhalte diesen Fehler:
TypeError: 'undefined' ist keine Funktion (Auswertung von 'parser.parse ()')
Hier ist mein Code.
<script>
require([
"esri/map",
"esri/layers/FeatureLayer",
"esri/dijit/Legend",
"esri/digit/HomeButton",
"dojo/_base/array",
"dojo/parser",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dijit/layout/AccordionContainer",
"dojo/domReady!"
], function(
Map, FeatureLayer, Legend, arrayUtils, parser, HomeButton
) {
parser.parse();
var map = new Map("map", {
basemap: "streets",
center: [-87.702733, 41.998508],
zoom: 15
});
var home = new HomeButton ({
map: map
}, "HomeButton");
home.startup();
var circuits = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/6", {
mode: FeatureLayer.MODE_ONDEMAND,
outFields:["*"]
});
var power = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/2", {
mode: FeatureLayer.MODE_ONDEMAND,
outFields:["*"]
});
//add the legend
map.on("layers-add-result", function (evt) {
var layerInfo = arrayUtils.map(evt.layers, function (layer, index) {
return {layer:layer.layer, title:layer.layer.name};
});
if (layerInfo.length > 0) {
var legendDijit = new Legend({
map: map,
layerInfos: layerInfo
}, "legendDiv");
legendDijit.startup();
}
});
map.addLayers([circuits, power]);
});
</script>
Ich habe es geschafft, dies durch Aufteilen des HomeButton-Teils getrennt vom Legend-Teil zum Laufen zu bringen. In der Ecke muss ich dojo.parser.parse () aufrufen - aber das funktioniert nicht mit dem Legend-Teil.
Ich verstehe nicht wirklich, wie das Dojo / der Parser funktioniert, daher ist es für mich schwierig zu verstehen, warum einige Teile dojo.parser.parse () und andere parser.parse () erfordern.