Mám Leaflet mapu, na které zobrazuji Esri ArcGIS REST vrstvu pomocí L.esri.dynamicMapLayer(). Kód, který tuto vrstvu inicializuje, dostává URL služby a seznam vrstev oddělených čárkami, které mají být zobrazeny – kterou službu a které vrstvy konfiguruje uživatel.<\/P>
Mým úkolem je poskytnout způsob, jak může uživatel kliknout na mapu a získat informace o prvcích pro blízká zařízení. Zkoušel jsem L.esri.query(), což bylo jednoduše nevhodné.<\/P>
Když se podívám na L.esri.DynamicMapLayer, vidím, že má funkci identify(), která by měla vracet objekt IdentifyFeatures. Ale nemám s jejím použitím žádný úspěch.<\/P>
Všechno, co zkouším, vede k chybě „bbox musí být specifikován“.<\/P>
Dokumentace k dynamicMapLayer je zde: dynamic-map-layer.html<\/A><\/P> Obsahuje:<\/P> Vrací nový L.esri.services.IdentifyFeatures objekt, který lze použít k identifikaci prvků na této vrstvě. Vaší callback funkci bude předána GeoJSON FeatureCollection s výsledky nebo chybou.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Všimněte si, že .at() je voláno s objektem latlong, objektem latlngbounds a "5".<\/P> Ale dokumentace pro objekt IdentifyFeatures je zde: identify-features.html<\/A><\/P> A dokumentace pro at() říká:<\/P> at(latlng) toto identifikuje prvky na dané pozici<\/P><\/BLOCKQUOTE>Pouze jeden argument. Žádný druhý argument bounds ani třetí číselný argument, pouze LatLng. LatLng odkazuje na Leaflet kód a znamená to objekt L.latLng obsahující vlastnosti lat a lng.<\/P>Ukázkový kód pro IdentifyFeatures je ještě matoucí:<\/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> Zde nepředáváme objekt L.latLng, ale pole.<\/P> Co to znamená? Jak bych to měl používat?<\/P>
Obsahuje:<\/P>
Vrací nový L.esri.services.IdentifyFeatures objekt, který lze použít k identifikaci prvků na této vrstvě. Vaší callback funkci bude předána GeoJSON FeatureCollection s výsledky nebo chybou.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Všimněte si, že .at() je voláno s objektem latlong, objektem latlngbounds a "5".<\/P> Ale dokumentace pro objekt IdentifyFeatures je zde:
Vrací nový L.esri.services.IdentifyFeatures objekt, který lze použít k identifikaci prvků na této vrstvě. Vaší callback funkci bude předána GeoJSON FeatureCollection s výsledky nebo chybou.<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Všimněte si, že .at() je voláno s objektem latlong, objektem latlngbounds a "5".<\/P> Ale dokumentace pro objekt IdentifyFeatures je zde:
A dokumentace pro at() říká:<\/P>
at(latlng) toto identifikuje prvky na dané pozici<\/P><\/BLOCKQUOTE>Pouze jeden argument. Žádný druhý argument bounds ani třetí číselný argument, pouze LatLng. LatLng odkazuje na Leaflet kód a znamená to objekt L.latLng obsahující vlastnosti lat a lng.<\/P>Ukázkový kód pro IdentifyFeatures je ještě matoucí:<\/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> Zde nepředáváme objekt L.latLng, ale pole.<\/P> Co to znamená? Jak bych to měl používat?<\/P>
at(latlng) toto identifikuje prvky na dané pozici<\/P><\/BLOCKQUOTE>
Pouze jeden argument. Žádný druhý argument bounds ani třetí číselný argument, pouze LatLng. LatLng odkazuje na Leaflet kód a znamená to objekt L.latLng obsahující vlastnosti lat a lng.<\/P>
Ukázkový kód pro IdentifyFeatures je ještě matoucí:<\/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> Zde nepředáváme objekt L.latLng, ale pole.<\/P> Co to znamená? Jak bych to měl používat?<\/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?
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.