I have featurelayers and I need to loop through all my featurelayers (in my map), to apply the Editor widget "esri/widgets/Editor", to the layers in my map (uploaded from ArcGIS Server online), because I need to add (edit, delete, update capibilities to my featurelayers in the same document).
Could you guide me?
Here is my code, I have this error message, when I run it
"Uncaught (in promise) TypeError: view.map.loadAll is not a function at code.html: 410 "
I understand now that this method is for a WebMap), but how to do with my featurelayers (I only have featurelayers). Here is all the code '''
let mypopup = {
title: "{Loc_Eng}",
content: [{
type: "fields",
fieldInfos: [{
fieldName: "Total_Pop",
label: "Population"
}, {
fieldName: "Total_M",
label: "Male"
}, {
fieldName: "Total_Fe",
label: "Female"
}]
}]
};
//Localities
let featureLayer1 = new FeatureLayer({
url: "https://services6.arcgis.com/nEMEkLg8rZV7Ijyb/ArcGIS/rest/services/SudanMap/FeatureServer/2",
popupTemplate: mypopup,
});
//Rivers
let featureLayer2 = new FeatureLayer({
url: "https://services6.arcgis.com/nEMEkLg8rZV7Ijyb/ArcGIS/rest/services/SudanMap/FeatureServer/0",
minScale: 100000000
});
let map1 = new Map({
basemap: "satellite",
ground: "world-elevation",
});
map1.add(featureLayer1)
map1.add(featureLayer2)
let view1 = new MapView({
map: map1,
container: "viewDiv",
center: [29.4917691, 14.5844444],
zoom: 4
});
view1.when(() => {
view1.map.loadAll().then(() => {
view1.map.forEach((layer) => {
if (layer.type === "feature") {
switch (layer.geometryType) {
case "polygon":
polygonLayer = layer;
break;
case "polyline":
lineLayer = layer;
break;
case "point":
pointLayer = layer;
break;
}
}
});
// Create layerInfos for layers in Editor. This
// sets the fields for editing.
const pointInfos = {
layer: pointLayer,
fieldConfig: [{
name: "LOCALITY",
label: "Locality"
}, {
name: "SETTLEMENT",
label: "SETTLEMENT"
}]
};
const polyInfos = {
layer: polygonLayer,
fieldConfig: [{
name: "DATE_ ",
label: "DATE"
}, {
name: "NAME",
label: "NAME"
}]
};
const editor = new Editor({
view: view,
layerInfos: [{
layer: pointLayer,
fieldConfig: [pointInfos]
}, {
layer: lineLayer,
fieldConfig: [lineInfos]
}, {
layer: polygonLayer,
fieldConfig: [polyInfos]
}],
// Set the snapping options for the Editor. By default, snapping is enabled. This can be toggled on/off using the CTRL key.
snappingOptions: {
enabled: true,
selfEnabled: true,
featureEnabled: true,
featureSources: [{
layer: pointLayer
}, {
layer: lineLayer
}, {
layer: polygonLayer
}]
}
});
// Add widget to top-right of the view
view1.ui.add(editor, "top-right");
});
});
});
</script>
<div id="viewDiv"></div>
<span id="help-window"></span>
<style>
#help-window {
font-size: 20px;
font-weight: bold;
font-family: sans-serif;
color: white
}
</style>
'''