Как обновить содержимое во всплывающем окне Leaflet?

Я работаю с Waxс Leaflet. Я настраиваю карту США, рисую границы штатов с помощью GeoJSON, используя листовку L.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('

Hello ' + e.properties.name + '!

'); } }); for (s in usStateData) { gjStates.addGeoJSON(usStateData[s]); } });

Сейчас все нормально отрисовывается, всплывающие окна имеют хороший контент, но потом я хочу изменить его позже, и нет возможности сослаться на него. Я видел в исходном коде, что bindPopup() возвращает 'this', который, как я думал, был объектом L.Popup, но в итоге получился что-то другое. Так, например, следующий код обновит активное всплывающее окно, а не конкретное для конкретного объекта (состояния) L.Path, к которому я пытаюсь получить доступ.

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

Копаясь в DOM с помощью firebug, я также вижу, что содержимое всплывающего окна задается во внутренней переменной, и я могу его обновить. Однако обновление этого не обновляет HTML, и я не могу узнать, что у Аляски ключ 52. _layers[52] также не имеет метода setContent(), на который я надеялся бы, если бы это был L .Всплывающий объект.

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

Итак, я застрял и не могу найти то, что мне нужно.Есть ли способ сослаться и обновить содержимое определенного всплывающего окна на карте после первоначального рендеринга?

6
задан Mike Shultz 9 March 2012 в 21:38
поделиться