J'ai une carte Leaflet dans laquelle j'affiche une couche Esri ArcGIS REST, en utilisant L.esri.dynamicMapLayer(). Le code qui initialise cette couche reçoit l'URL du service et une liste de couches séparées par des virgules à afficher - le service et les couches sont configurés par l'utilisateur.<\/P>
Ma tâche est de fournir un moyen permettant à l'utilisateur de cliquer sur la carte et d'obtenir des informations sur les entités des installations à proximité. J'avais regardé L.esri.query(), qui était tout simplement inapproprié.<\/P>
En regardant L.esri.DynamicMapLayer, je vois qu'il a une fonction identify(), qui devrait retourner un objet IdentifyFeatures. Mais je n'ai aucun succès en l'utilisant.<\/P>
Tout ce que j'essaie aboutit à une erreur « bbox doit être spécifié ».<\/P>
La documentation pour dynamicMapLayer est ici : dynamic-map-layer.html<\/A><\/P> Elle inclut :<\/P> Retourne un nouvel objet L.esri.services.IdentifyFeatures qui peut être utilisé pour identifier des entités sur cette couche. Votre fonction de rappel recevra une FeatureCollection GeoJSON avec les résultats ou une erreur.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Notez que .at() est appelé avec un objet latlong, un objet latlngbounds et "5".<\/P> Mais la documentation pour l'objet IdentifyFeatures est ici : identify-features.html<\/A><\/P> Et sa documentation pour at() est :<\/P> at( latlng) identifie les entités à un point donné<\/P><\/BLOCKQUOTE>Un seul argument. Pas de second argument bounds ni de troisième argument numérique, simplement un LatLng. Le LatLng renvoie au code Leaflet, indiquant qu'il s'agit d'un objet L.latLng contenant une propriété lat et une propriété lng.<\/P>Le code d'exemple pour IdentifyFeatures est encore plus déroutant :<\/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("Décalage UTC : " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Ici, nous ne passons pas un objet L.latLng mais un tableau.<\/P> Qu'est-ce que cela signifie ? Comment suis-je censé utiliser cela ?<\/P>
Elle inclut :<\/P>
Retourne un nouvel objet L.esri.services.IdentifyFeatures qui peut être utilisé pour identifier des entités sur cette couche. Votre fonction de rappel recevra une FeatureCollection GeoJSON avec les résultats ou une erreur.<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Notez que .at() est appelé avec un objet latlong, un objet latlngbounds et "5".<\/P> Mais la documentation pour l'objet IdentifyFeatures est ici :
Retourne un nouvel objet L.esri.services.IdentifyFeatures qui peut être utilisé pour identifier des entités sur cette couche. Votre fonction de rappel recevra une FeatureCollection GeoJSON avec les résultats ou une erreur.<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> Notez que .at() est appelé avec un objet latlong, un objet latlngbounds et "5".<\/P> Mais la documentation pour l'objet IdentifyFeatures est ici :
Et sa documentation pour at() est :<\/P>
at( latlng) identifie les entités à un point donné<\/P><\/BLOCKQUOTE>Un seul argument. Pas de second argument bounds ni de troisième argument numérique, simplement un LatLng. Le LatLng renvoie au code Leaflet, indiquant qu'il s'agit d'un objet L.latLng contenant une propriété lat et une propriété lng.<\/P>Le code d'exemple pour IdentifyFeatures est encore plus déroutant :<\/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("Décalage UTC : " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Ici, nous ne passons pas un objet L.latLng mais un tableau.<\/P> Qu'est-ce que cela signifie ? Comment suis-je censé utiliser cela ?<\/P>
at( latlng) identifie les entités à un point donné<\/P><\/BLOCKQUOTE>
Un seul argument. Pas de second argument bounds ni de troisième argument numérique, simplement un LatLng. Le LatLng renvoie au code Leaflet, indiquant qu'il s'agit d'un objet L.latLng contenant une propriété lat et une propriété lng.<\/P>
Le code d'exemple pour IdentifyFeatures est encore plus déroutant :<\/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("Décalage UTC : " + featureCollection.features[0].properties.ZONE); }); <\/CODE><\/PRE> Ici, nous ne passons pas un objet L.latLng mais un tableau.<\/P> Qu'est-ce que cela signifie ? Comment suis-je censé utiliser cela ?<\/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?
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.