2012-03-09 23 views
6

私はWaxLeafletで作業しています。私はリーフレットのL.GeoJSONを使ってGeoJSONで国境を描く、米国の地図を設定しています。リーフレットポップアップでコンテンツを更新するにはどうすればよいですか?

マップのロード中にすべての設定を取得できるようになりましたが、地図が描画された後にポップアップでコンテンツを調整できる必要があります。ここで私がやっているのストリップダウンバージョンです:

var gjStates = new L.GeoJSON(null, null); 
wax.tilejson(url, function(tilejson) { 
    map = new L.Map('map').addLayer(new wax.leaf.connector(tilejson)).addLayer(gjStates); 

    gjStates.on("featureparse", function (e) { 
     if (e.properties && e.properties.name){ 
      pops[e.id.substring(4)] = e.layer.bindPopup('<h4>Hello ' + e.properties.name + '!</h4>'); 
     } 
    }); 
    for (s in usStateData) { 
     gjStates.addGeoJSON(usStateData[s]); 
    } 
}); 

は今、すべてが正常描く

、ポップアップが良いconentを持っていますが、その後私は後でそれを変更したいし、それを参照する方法はありません。私はソースでbindPopup()がL.Popupオブジェクトだと思った 'this'を返しますが、何か他のものを終了しました。たとえば、次のコードは、私が取得しようとしている特定のL.Pathオブジェクト(状態)の特定のものではなく、アクティブなポップアップを破棄します。放火犯とDOMを掘り

pops['AK']._map._popup.setContent('I am ALASKA!'); 

、私はまた、ポップアップコンテンツは内部変数に設定されていると私はそれを更新することができていることがわかります。しかし、これを更新してもHTMLは更新されず、アラスカには52のキーがあることがわかりません。_layers [52]には、Lの場合はsetContent()メソッドもありません。 .Popupオブジェクト。

gjStates._layers[52]._popupContent = 'I am ALASKA!'; 

私は何か必要なものを見つけることができません。最初のレンダリングの後、マップ上の特定のポップアップを参照してコンテンツを更新する方法はありますか?

+0

この回答を調整すると、あなたのために役立つかもしれません:http://stackoverflow.com/a/12712987/1224449。 – araichev

+0

この問題の他の人には、これは助けてくれるかもしれないhttp://stackoverflow.com/questions/34504816/leafletjs-how-to-get-a-handle-to-the-active-pop-marker – Brandan

答えて

1

すべてのレイヤーへの参照を保持しておき、後でlayer.bindPopup()を呼び出してポップアップコンテンツを変更することができます。

+0

どのレイヤーですか? gjStates?これは、すべての異なる状態のコンテンツをインポートし、そのレイヤーの各オブジェクトのポップアップコンテンツを変更したいだけです。 –

+0

featureparseイベントハンドラの 'e.layer' – Acorn

関連する問題