Я работаю с воском с помощью 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('<h4>Hello ' + e.properties.name + '!</h4>');
}
});
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 .Popup объект.
gjStates._layers[52]._popupContent = 'I am ALASKA!';
Итак, я как бы застрял и не нахожу то, что мне нужно. Могу ли я ссылаться на конкретное всплывающее окно на карте и обновлять его содержимое после первоначального рендеринга?