2016-10-04 11 views
1

リーフレットチュートリアル(http://leafletjs.com/examples/geojson/)には、マーカーや機能をポップアップに関連付ける方法が示されています。これにはHTMLコードを入れることができます。リーフレット:geoJSONファイルと特定のPopUpをロードする

URLを使用して読み込む特定のポップアップをユーザーが指定できるようにしたいと考えています。リーフレットチュートリアルでは、URL http://leafletjs.com/examples/geojson/example.html はマップとフィーチャーを読み込みますが、ユーザーがフィーチャーをクリックするまでポップアップは表示されません。

http://leafletjs.com/examples/geojson/example.html#Coors%40Field に特定の機能を関連付けて、ユーザーがURLを指定すると自動的に表示する方法はありますか?

答えて

5

あなたが正確に求めているものを解釈するのは少し難しいですが、location of the current documenthash portionが地理的特徴のいくつかのプロパティと一致すると自動的にポップアップを開くように思えます。

だから、名前はハッシュと一致するかどうかをチェック、L.GeoJSON.eachLayer()を使用してGeoJSONの機能により、ループ、その後、あなたの層をインスタンス化:心に留めておくべき

var group = L.geoJSON(geojson, {...}).addTo(map); 

group.eachLayer(function(layer) { 
    if ('#' + layer.feature.properties.name === document.location.hash) { 
     layer.openPopup(); 
    } 
}); 

いくつかのこと:

  • ストアA L.GeoJSONのインスタンスを参照して操作することができます(​​メソッドを呼び出します)。
  • L.GeoJSONがリーフレット層( L.MarkerL.Polyline又は L.Polygon)をインスタンス化
  • は、それが新規に作成された層の特性、従ってlayer.featureようにGeoJSON機能を格納します。
  • document.locationのハッシュ部分は、常に#で始まる文字列です。あなたはあらかじめ、URL encodingに注意を払い、それをきれいにする必要があります。
+0

イワン、華麗な感謝 - 素晴らしい作品! Kirby – KirbyJames

+0

@KirbyJamesイワンに感謝します。人々に感謝するこの方法は、あなたの問題を解決するのに役立つ答えを**受け入れることです。 – ghybs

関連する問題