Ich habe eine Leaflet-Karte, in der ich eine Esri ArcGIS REST-Ebene mit L.esri.dynamicMapLayer() anzeige. Der Code, der diese Ebene initialisiert, erhält die URL zum Service und eine durch Kommas getrennte Liste von Layern, die angezeigt werden sollen – welcher Service und welche Layer verwendet werden, wird vom Benutzer konfiguriert.<\/P>
Meine Aufgabe ist es, eine Möglichkeit bereitzustellen, mit der der Benutzer auf die Karte klicken und Feature-Informationen für nahegelegene Einrichtungen erhalten kann. Ich hatte L.esri.query() betrachtet, was jedoch völlig ungeeignet war.<\/P>
Beim Betrachten von L.esri.DynamicMapLayer sehe ich, dass es eine Funktion identify() hat, die ein IdentifyFeatures-Objekt zurückgeben sollte. Aber ich habe keinen Erfolg bei der Verwendung.<\/P>
Alles, was ich versuche, führt zu einem Fehler „bbox muss angegeben werden“.<\/P>
Die Dokumentation für dynamicMapLayer ist hier: dynamic-map-layer.html<\/A><\/P> Sie beinhaltet:<\/P> Gibt ein neues L.esri.services.IdentifyFeatures-Objekt zurück, das verwendet werden kann, um Features auf dieser Ebene zu identifizieren. Ihrer Callback-Funktion wird eine GeoJSON FeatureCollection mit den Ergebnissen oder einem Fehler übergeben.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Beachten Sie, dass .at() mit einem latlong-Objekt, einem latlngbounds-Objekt und "5" aufgerufen wird.<\/P> Aber die Dokumentation für das IdentifyFeatures-Objekt ist hier: identify-features.html<\/A><\/P> Und die Dokumentation für at() lautet:<\/P> at(latlng) identifiziert Features an einem gegebenen Punkt<\/P><\/BLOCKQUOTE>Nur ein Argument. Kein zweites Bounds-Argument oder drittes numerisches Argument – einfach ein LatLng. Das LatLng verweist auf den Leaflet-Code und zeigt an, dass es sich um ein L.latLng-Objekt handelt, das eine lat- und lng-Eigenschaft enthält.<\/P>Der Beispielcode für IdentifyFeatures ist noch verwirrender:<\/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> Hier übergeben wir kein L.latLng-Objekt sondern ein Array.<\/P> Wie ist das zu verstehen? Wie soll ich das verwenden? <\/P>
Sie beinhaltet:<\/P>
Gibt ein neues L.esri.services.IdentifyFeatures-Objekt zurück, das verwendet werden kann, um Features auf dieser Ebene zu identifizieren. Ihrer Callback-Funktion wird eine GeoJSON FeatureCollection mit den Ergebnissen oder einem Fehler übergeben.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Beachten Sie, dass .at() mit einem latlong-Objekt, einem latlngbounds-Objekt und "5" aufgerufen wird.<\/P> Aber die Dokumentation für das IdentifyFeatures-Objekt ist hier:
Gibt ein neues L.esri.services.IdentifyFeatures-Objekt zurück, das verwendet werden kann, um Features auf dieser Ebene zu identifizieren. Ihrer Callback-Funktion wird eine GeoJSON FeatureCollection mit den Ergebnissen oder einem Fehler übergeben.<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Beachten Sie, dass .at() mit einem latlong-Objekt, einem latlngbounds-Objekt und "5" aufgerufen wird.<\/P> Aber die Dokumentation für das IdentifyFeatures-Objekt ist hier:
Und die Dokumentation für at() lautet:<\/P>
at(latlng) identifiziert Features an einem gegebenen Punkt<\/P><\/BLOCKQUOTE>Nur ein Argument. Kein zweites Bounds-Argument oder drittes numerisches Argument – einfach ein LatLng. Das LatLng verweist auf den Leaflet-Code und zeigt an, dass es sich um ein L.latLng-Objekt handelt, das eine lat- und lng-Eigenschaft enthält.<\/P>Der Beispielcode für IdentifyFeatures ist noch verwirrender:<\/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> Hier übergeben wir kein L.latLng-Objekt sondern ein Array.<\/P> Wie ist das zu verstehen? Wie soll ich das verwenden? <\/P>
at(latlng) identifiziert Features an einem gegebenen Punkt<\/P><\/BLOCKQUOTE>
Nur ein Argument. Kein zweites Bounds-Argument oder drittes numerisches Argument – einfach ein LatLng. Das LatLng verweist auf den Leaflet-Code und zeigt an, dass es sich um ein L.latLng-Objekt handelt, das eine lat- und lng-Eigenschaft enthält.<\/P>
Der Beispielcode für IdentifyFeatures ist noch verwirrender:<\/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> Hier übergeben wir kein L.latLng-Objekt sondern ein Array.<\/P> Wie ist das zu verstehen? Wie soll ich das verwenden? <\/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?
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.