Ik heb een Leaflet-kaart waarin ik een Esri ArcGIS REST-laag weergeef, met behulp van L.esri.dynamicMapLayer(). De code die deze laag initialiseert krijgt de URL naar de service en een door komma's gescheiden lijst van lagen die moeten worden weergegeven - welke service en welke lagen worden geconfigureerd door de gebruiker.<\/P>
Mijn taak is om een manier te bieden waarmee de gebruiker op de kaart kan klikken en functie-informatie kan verkrijgen voor de nabijgelegen faciliteiten. Ik had gekeken naar L.esri.query(), wat gewoon niet geschikt was.<\/P>
Kijkend naar L.esri.DynamicMapLayer, zie ik dat het een functie identify() heeft, die een IdentifyFeatures-object zou moeten retourneren. Maar ik heb geen succes met het gebruik ervan.<\/P>
Alles wat ik probeer resulteert in een foutmelding "bbox moet worden opgegeven".<\/P>
De documentatie voor dynamicMapLayer is hier te vinden: dynamic-map-layer.html<\/A><\/P> Het bevat:<\/P> Geeft een nieuw L.esri.services.IdentifyFeatures-object terug dat kan worden gebruikt om features op deze laag te identificeren. Je callback-functie krijgt een GeoJSON FeatureCollection met de resultaten of een foutmelding.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Let op dat .at() wordt aangeroepen met een latlong-object, een latlngbounds-object en "5".<\/P> Maar de documentatie voor het IdentifyFeatures-object is hier te vinden: identify-features.html<\/A><\/P> En de documentatie voor at() is:<\/P> at( latlng) dit identificeert features op een gegeven locatie<\/P><\/BLOCKQUOTE>Slechts één argument. Geen tweede bounds-argument of derde numeriek argument, gewoon een LatLng. De LatLng verwijst naar de Leaflet-code en geeft aan dat het een L.latLng-object is met een lat- en lng-eigenschap.<\/P>De voorbeeldcode voor IdentifyFeatures is nog verwarrender:<\/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 geven we geen L.latLng-object door maar een array.<\/P> Hoe zit dat? Hoe moet ik dit gebruiken?<\/P>
Het bevat:<\/P>
Geeft een nieuw L.esri.services.IdentifyFeatures-object terug dat kan worden gebruikt om features op deze laag te identificeren. Je callback-functie krijgt een GeoJSON FeatureCollection met de resultaten of een foutmelding.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Let op dat .at() wordt aangeroepen met een latlong-object, een latlngbounds-object en "5".<\/P> Maar de documentatie voor het IdentifyFeatures-object is hier te vinden:
Geeft een nieuw L.esri.services.IdentifyFeatures-object terug dat kan worden gebruikt om features op deze laag te identificeren. Je callback-functie krijgt een GeoJSON FeatureCollection met de resultaten of een foutmelding.<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Let op dat .at() wordt aangeroepen met een latlong-object, een latlngbounds-object en "5".<\/P> Maar de documentatie voor het IdentifyFeatures-object is hier te vinden:
En de documentatie voor at() is:<\/P>
at( latlng) dit identificeert features op een gegeven locatie<\/P><\/BLOCKQUOTE>Slechts één argument. Geen tweede bounds-argument of derde numeriek argument, gewoon een LatLng. De LatLng verwijst naar de Leaflet-code en geeft aan dat het een L.latLng-object is met een lat- en lng-eigenschap.<\/P>De voorbeeldcode voor IdentifyFeatures is nog verwarrender:<\/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 geven we geen L.latLng-object door maar een array.<\/P> Hoe zit dat? Hoe moet ik dit gebruiken?<\/P>
at( latlng) dit identificeert features op een gegeven locatie<\/P><\/BLOCKQUOTE>
Slechts één argument. Geen tweede bounds-argument of derde numeriek argument, gewoon een LatLng. De LatLng verwijst naar de Leaflet-code en geeft aan dat het een L.latLng-object is met een lat- en lng-eigenschap.<\/P>
De voorbeeldcode voor IdentifyFeatures is nog verwarrender:<\/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 geven we geen L.latLng-object door maar een array.<\/P> Hoe zit dat? Hoe moet ik dit gebruiken?<\/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?
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.