我正在使用带有Leaflet的Wax。我正在设置美国地图,使用传单的 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]);
}
});
现在,一切都很好,弹出窗口有很好的内容,但是我想稍后对其进行更改,并且无法引用它。我在源代码中看到 bindPopup() 返回“this”,我认为它是 L.Popup 对象,但最终得到了其他东西。因此,例如,以下代码将更新活动弹出窗口,而不是我试图获取的特定 L.Path 对象(状态)的特定弹出窗口。
pops['AK']._map._popup.setContent('I am ALASKA!');
用 firebug 挖掘 DOM,我还可以看到弹出内容设置在一个内部变量中,我可以对其进行更新。但是,更新它不会更新 HTML,而且我无法发现 Alaska 的密钥为 52。 _layers[52] 也没有我希望的 setContent() 方法,如果它是 L .Popup 对象。
gjStates._layers[52]._popupContent = 'I am ALASKA!';
所以,我有点卡住了,找不到我需要的东西。在初始渲染后,我有什么方法可以参考和更新地图上特定弹出窗口的内容?