私は Leaflet マップ上に Esri ArcGIS REST レイヤーを表示しており、L.esri.dynamicMapLayer() を使用しています。このレイヤーを初期化するコードにはサービスの URL と表示するレイヤーのカンマ区切りリストが渡されます。どのサービスとどのレイヤーを使うかはユーザーが設定します。<\/P>
私のタスクは、ユーザーがマップをクリックして近隣施設のフィーチャ情報を取得できるようにすることです。以前は L.esri.query() を検討していましたが、それは単純に不適切でした。<\/P>
L.esri.DynamicMapLayer を見てみると、identify() 関数があり、IdentifyFeatures オブジェクトを返すはずですが、うまく使えていません。<\/P>
試みるたびに「bbox must be specified」というエラーが出ます。<\/P>
dynamicMapLayer のドキュメントはこちらです:dynamic-map-layer.html<\/A><\/P> 内容には以下が含まれています:<\/P> このレイヤー上のフィーチャを識別するために使用できる新しい L.esri.services.IdentifyFeatures オブジェクトを返します。コールバック関数には結果またはエラーを含む GeoJSON FeatureCollection が渡されます。<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> .at() は latlng オブジェクト、latlngbounds オブジェクト、および "5" の引数で呼ばれていることに注意してください。<\/P> しかし IdentifyFeatures オブジェクトのドキュメントはこちらです:identify-features.html<\/A><\/P> そして at() のドキュメントは以下の通りです:<\/P> at( latlng) は指定された位置でフィーチャを識別します。引数は一つだけです。<\/P><\/BLOCKQUOTE>引数は一つだけで、2番目の bounds 引数や3番目の数値引数はありません。単に LatLng です。LatLng は Leaflet コードへのリンクで、lat と lng プロパティを持つ L.latLng オブジェクトであることが示されています。<\/P>IdentifyFeatures の例コードはさらに混乱させます:<\/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> ここでは L.latLng オブジェクトではなく配列を渡しています。<\/P> どういうことでしょう?これをどう使えばいいのでしょうか?<\/P>
内容には以下が含まれています:<\/P>
このレイヤー上のフィーチャを識別するために使用できる新しい L.esri.services.IdentifyFeatures オブジェクトを返します。コールバック関数には結果またはエラーを含む GeoJSON FeatureCollection が渡されます。<\/P><\/BLOCKQUOTE>dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> .at() は latlng オブジェクト、latlngbounds オブジェクト、および "5" の引数で呼ばれていることに注意してください。<\/P> しかし IdentifyFeatures オブジェクトのドキュメントはこちらです:
このレイヤー上のフィーチャを識別するために使用できる新しい L.esri.services.IdentifyFeatures オブジェクトを返します。コールバック関数には結果またはエラーを含む GeoJSON FeatureCollection が渡されます。<\/P><\/BLOCKQUOTE>
dynamicMapLayer.identify() .at(latlng, latlngbounds, 5) .run(function(error, featureCollection) { console.log(featureCollection); }); <\/CODE><\/PRE> .at() は latlng オブジェクト、latlngbounds オブジェクト、および "5" の引数で呼ばれていることに注意してください。<\/P> しかし IdentifyFeatures オブジェクトのドキュメントはこちらです:
そして at() のドキュメントは以下の通りです:<\/P>
at( latlng) は指定された位置でフィーチャを識別します。引数は一つだけです。<\/P><\/BLOCKQUOTE>引数は一つだけで、2番目の bounds 引数や3番目の数値引数はありません。単に LatLng です。LatLng は Leaflet コードへのリンクで、lat と lng プロパティを持つ L.latLng オブジェクトであることが示されています。<\/P>IdentifyFeatures の例コードはさらに混乱させます:<\/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> ここでは L.latLng オブジェクトではなく配列を渡しています。<\/P> どういうことでしょう?これをどう使えばいいのでしょうか?<\/P>
at( latlng) は指定された位置でフィーチャを識別します。引数は一つだけです。<\/P><\/BLOCKQUOTE>
引数は一つだけで、2番目の bounds 引数や3番目の数値引数はありません。単に LatLng です。LatLng は Leaflet コードへのリンクで、lat と lng プロパティを持つ L.latLng オブジェクトであることが示されています。<\/P>
IdentifyFeatures の例コードはさらに混乱させます:<\/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> ここでは L.latLng オブジェクトではなく配列を渡しています。<\/P> どういうことでしょう?これをどう使えばいいのでしょうか?<\/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?
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.