Я работаю с 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!';
Итак, я застрял и не могу найти то, что мне нужно.Есть ли способ сослаться и обновить содержимое определенного всплывающего окна на карте после первоначального рендеринга?