2012-03-09 17 views
6

Estoy trabajando con Wax con Leaflet. Estoy configurando un mapa de los EE. UU., Dibujando los límites del estado con GeoJSON usando el folleto L.GeoJSON.¿Cómo actualizo el contenido en una ventana emergente de folleto?

Puedo obtener todo lo configurado durante la carga del mapa, pero tengo que ser capaz de ajustar el contenido en las ventanas emergentes después de dibujar el mapa. He aquí una versión simplificada de lo que estoy haciendo:

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]); 
    } 
}); 

Ahora, todo lo que dibuja bien, ventanas emergentes tienen buena conent, pero luego me quieren alterar más tarde y no hay manera de hacer referencia a ella. Vi en la fuente que bindPopup() devuelve 'this', que pensé que era el objeto L.Popup, pero terminó en otra cosa. Entonces, por ejemplo, el siguiente código abrirá la ventana emergente activa, no la específica para el objeto L.Path (estado) específico que estoy tratando de obtener.

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

de excavación a través del DOM con Firebug, que también se puede ver que el contenido emergente se encuentra en una variable interna y puedo actualizarlo. Sin embargo, actualizar esto no actualiza el HTML, y no hay manera de que descubra que Alaska tiene la clave de 52. _layers [52] tampoco tiene el método setContent() que esperaría si fuera un L . Objeto de pago.

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

Por lo tanto, estoy atascado y no encuentro lo que necesito. ¿Hay alguna forma de que haga referencia y actualice el contenido para una ventana emergente específica en el mapa después de la representación inicial?

+0

Afinar esta respuesta podría funcionar para usted: http://stackoverflow.com/a/12712987/1224449. – araichev

+0

Para otros con este problema, esto puede ayudar a http://stackoverflow.com/questions/34504816/leafletjs-how-to-get-a-handle-to-the-active-pop-marker – Brandan

Respuesta

1

Estoy bastante seguro de que puede mantener referencias a todas las capas, y luego llamar al layer.bindPopup() en otro momento para cambiar el contenido emergente.

+0

¿Qué capas? gjEstados? Eso importa todo el contenido de estado diferente y solo quiero cambiar el contenido emergente en cada objeto en esa capa. –

+0

'e.layer' en el controlador de eventos de featureparse – Acorn

Cuestiones relacionadas