Tengo un mapa Leaflet en el que estoy mostrando una capa Esri ArcGIS REST, usando L.esri.dynamicMapLayer(). El código que inicializa esta capa recibe la URL del servicio y una lista separada por comas de capas para mostrar, el servicio y las capas son configurados por el usuario.<\/P>
Mi tarea es proporcionar un medio para que el usuario pueda hacer clic en el mapa y obtener información de entidades para las instalaciones cercanas. Había estado mirando L.esri.query(), que simplemente no era apropiado.<\/P>
Al observar L.esri.DynamicMapLayer, veo que tiene una función identify(), que debería devolver un objeto IdentifyFeatures. Pero no he tenido suerte usándola.<\/P>
Todo lo que intento resulta en un error "bbox debe ser especificado".<\/P>
La documentación para dynamicMapLayer está aquí: dynamic-map-layer.html<\/A><\/P> Incluye:<\/P> Devuelve un nuevo objeto L.esri.services.IdentifyFeatures que puede usarse para identificar entidades en esta capa. Su función callback recibirá una FeatureCollection GeoJSON con los resultados o un error.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Note que .at() se llama con un objeto latlong, un objeto latlngbounds y "5".<\/P> Pero la documentación para el objeto IdentifyFeatures está aquí: identify-features.html<\/A><\/P> Y su documentación para at() es:<\/P> at( latlng) esto identifica entidades en un punto dado<\/P><\/BLOCKQUOTE>Solo un argumento. No hay segundo argumento de límites ni tercer argumento numérico, simplemente un LatLng. El LatLng enlaza al código Leaflet, indicando que es un objeto L.latLng que contiene una propiedad lat y una lng.<\/P>El código de ejemplo para IdentifyFeatures es aún más confuso:<\/P>L.esri.identifyFeatures({ url: 'http:\/\/sampleserver6.arcgisonline.com\/arcgis\/rest\/services\/WorldTimeZones\/MapServer' }) .on(map) .at([45.543, -122.621]) .layers('visible:1') .run(function(error, featureCollection, response){ console.log("UTC Offset: " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Aquí no estamos pasando un objeto L.latLng, estamos pasando un arreglo.<\/P> ¿Qué pasa? ¿Cómo se supone que debo usar esto?<\/P>
Incluye:<\/P>
Devuelve un nuevo objeto L.esri.services.IdentifyFeatures que puede usarse para identificar entidades en esta capa. Su función callback recibirá una FeatureCollection GeoJSON con los resultados o un error.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Note que .at() se llama con un objeto latlong, un objeto latlngbounds y "5".<\/P> Pero la documentación para el objeto IdentifyFeatures está aquí:
Devuelve un nuevo objeto L.esri.services.IdentifyFeatures que puede usarse para identificar entidades en esta capa. Su función callback recibirá una FeatureCollection GeoJSON con los resultados o un error.<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Note que .at() se llama con un objeto latlong, un objeto latlngbounds y "5".<\/P> Pero la documentación para el objeto IdentifyFeatures está aquí:
Y su documentación para at() es:<\/P>
at( latlng) esto identifica entidades en un punto dado<\/P><\/BLOCKQUOTE>Solo un argumento. No hay segundo argumento de límites ni tercer argumento numérico, simplemente un LatLng. El LatLng enlaza al código Leaflet, indicando que es un objeto L.latLng que contiene una propiedad lat y una lng.<\/P>El código de ejemplo para IdentifyFeatures es aún más confuso:<\/P>L.esri.identifyFeatures({ url: 'http:\/\/sampleserver6.arcgisonline.com\/arcgis\/rest\/services\/WorldTimeZones\/MapServer' }) .on(map) .at([45.543, -122.621]) .layers('visible:1') .run(function(error, featureCollection, response){ console.log("UTC Offset: " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Aquí no estamos pasando un objeto L.latLng, estamos pasando un arreglo.<\/P> ¿Qué pasa? ¿Cómo se supone que debo usar esto?<\/P>
at( latlng) esto identifica entidades en un punto dado<\/P><\/BLOCKQUOTE>
Solo un argumento. No hay segundo argumento de límites ni tercer argumento numérico, simplemente un LatLng. El LatLng enlaza al código Leaflet, indicando que es un objeto L.latLng que contiene una propiedad lat y una lng.<\/P>
El código de ejemplo para IdentifyFeatures es aún más confuso:<\/P>
L.esri.identifyFeatures({ url: 'http:\/\/sampleserver6.arcgisonline.com\/arcgis\/rest\/services\/WorldTimeZones\/MapServer' }) .on(map) .at([45.543, -122.621]) .layers('visible:1') .run(function(error, featureCollection, response){ console.log("UTC Offset: " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Aquí no estamos pasando un objeto L.latLng, estamos pasando un arreglo.<\/P> ¿Qué pasa? ¿Cómo se supone que debo usar esto?<\/P>
i answered this question on gis.se.
leaflet - Querying feature info for L.esri.dynamicMapLayer "bbox must be specified" - Geographic Information Systems Sta…
if you still have questions after reviewing my response, i'd be happy to review a jsbin.
When I pass a LatLng object, I receive a "bbox must be specified" error. Any ideas as to what I should look at?
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.