Estoy usando ArcGIS Javascript API 4.20 para recuperar un mapa web de ArcGIS en línea, y puedo cargarlo y mostrarlo proporcionando su ID, usando el siguiente script simple:
import MapView from "https://js.arcgis.com/4.20/@arcgis/core/views/MapView.js"; import WebMap from "https://js.arcgis.com/4.20/@arcgis/core/WebMap.js"; import esriId from "https://js.arcgis.com/4.20/@arcgis/core/identity/IdentityManager.js"; var webmap = new WebMap({ portalItem: { id: "1234567890qwertyuiop" } }); var view = new MapView({ map: webmap, container: "mapFrame", //ID of the HTML element where the map will be displayed });
Necesito encontrar una manera de ajustar mediante programación el zoom del mapa cuando se carga, de modo que cada capa/función contenida en él sea visible en el área que se muestra en el mapa.
Encontré ejemplos y referencias usando una función "fullExtent", pero según tengo entendido, está diseñada para funcionar con una capa. No he podido descubrir cómo aplicar la misma idea al mapa web completo y hacer que funcione: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html #toda su extensión
webmap.when(function(){ view.extent = webmap.fullExtent; }); //I've tried using this. It doesn't raise any errors, but does nothing.
¿Podría por favor decirme qué estoy haciendo mal? ¿O compartir alguna idea para lograr lo que necesito programáticamente usando un enfoque diferente?
WebMap
no tiene una propiedad fullExtent
, por lo que no funcionará.
Supongo que está tratando de tener una forma de establecer dinámicamente la extensión inicial relacionada con algunas características de las capas. Si ese es el caso, debe calcularlo utilizando la propiedad fullExtent
de las capas involucradas. Eso no debería ser demasiado difícil de extraer, puede hacerlo iterando manualmente en todas las extensiones completas de las capas y obteniendo el mínimo y máximo x e y, o usar el método de union
de Extent
(1).
Otra forma de pensar el problema es usar un área de interés fija, calcular manualmente la extensión y establecerla en la vista. O elige un centro y juega con los niveles de zoom.