Por diversas razones necesito añadir capas a un objeto de mapa utilizando una respuesta devuelta por un esriRequest a un ArcGIS Server. Una de las razones es que los datos cambian constantemente y la codificación de URLs de FeatureLayer sería ineficiente.
He logrado devolver un objeto JSON que contiene la atribución que parece ser los mismos datos que uno vería en el nodo REST de las capas.
maps = [];
require([
"esri/map", "esri/layers/FeatureLayer",
"esri/dijit/Print", "esri/tasks/PrintTemplate", "esri/request",
"esri/config","esri/dijit/BasemapToggle",
"dojo/_base/array", "dojo/dom", "dojo/parser", "dojo/domReady!"
], function (Map, FeatureLayer,Print, PrintTemplate, esriRequest, esriConfig,BasemapToggle,arrayUtils, dom, parser){
parser.parse();
console.log("Map Start");
esriConfig.defaults.io.proxyUrl = "http://........./proxy.ashx";
maps.addRespLyrs = function addRespLyrs (layer) {
if (layer.type == "Feature layer") {
console.log(layer.name);
maps.map.addLayer(layer);
}
};
maps.handleMapInfo = function handleMapInfo (resp) {
console.log("handleMapInfo called");
maps.layers = resp.layers;
console.log(maps.layers);
for (i in maps.layers) {
var layer = maps.layers[i];
maps.addRespLyrs(layer);
}
};
maps.layerRequest = function layerRequest () {
var mapInfo = esriRequest({
"url": "https://........./Application Name/MapServer/layers",
"content" : {"f":"json"},
"handleAs" : "json",
"callbackParamName" : "callback"
});
mapInfo.then(maps.handleMapInfo);
};
maps.map = new Map("cpCentCent", {
basemap:"topo",
center: [-98.5795, 39.8282],
zoom: 5
});
console.log("Map End");
Al intentar añadir los datos mediante el método addLayer() recibo un error lanzado desde lo más profundo de la API de esri.
init.js:199 TypeError: a.id.match no es una función( ) "TypeError: a.id.match no es una función
¿Alguna idea de lo que puede estar fallando aquí o de cómo crear una capa a partir de mi JSON?
0 votos
A ver si esta discusión le sirve de orientación: geonet.esri.com/thread/65193
0 votos
geothread.net/importing-geojson-data-in-arcgis-javascript-maps puede ayudar, tendrá que ser alterado para sus datos JSON. Si ejecuta un servidor web local en su máquina y descarga la biblioteca AsrCGIS JS puede hacerlo.
0 votos
¿podría publicar una parte de su archivo de capas de características json