Haga clic en Eventos con Leaflet y geoJSON

15

¿Cómo adjunto un evento de clic a un geoJSON que luego ejecuta una función Ajax cuando se hace clic? Busqué en onEachFeature pero eso se ejecuta cuando se carga el geoJSON, no cuando se hace clic, ¡por lo tanto se ejecuta una tonelada de llamadas ajax!

    
pregunta Rusty Shackleford 09.11.2014 - 17:34

3 respuestas

17

Estabas en el camino correcto con onEachFeature .

Es solo que debes vincular el evento haciendo clic en cada elemento.

Ver más abajo (probado)

function whenClicked(e) {
  // e = event
  console.log(e);
  // You can make your ajax call declaration here
  //$.ajax(... 
}

function onEachFeature(feature, layer) {
    //bind click
    layer.on({
        click: whenClicked
    });
}

geojson = L.geoJson(your_data, {
    style: style,
    onEachFeature: onEachFeature
}).addTo(map);
    
respondido por el ThomasG77 09.11.2014 - 17:58
5

Puedes hacerlo con un poco menos de código que la versión de ThomasG77:

function onEachFeature(feature, layer) {
    //bind click
    layer.on('click', function (e) {
      // e = event
      console.log(e);
      // You can make your ajax call declaration here
      //$.ajax(... 
    });

}

geojson = L.geoJson(your_data, {
    style: style,
    onEachFeature: onEachFeature
}).addTo(map);
    
respondido por el Steve Bennett 13.04.2015 - 12:53
2

simplemente otra manera como función en línea

geojson = L.geoJson(your_data, {
style: style,
onEachFeature: function onEachFeature(feature, layer) {

layer.on('mouseover', function (e) {
  // e = event
  console.log(e);
  // You can make your ajax call declaration here
  //$.ajax(... 
  });}).addTo(map);
    
respondido por el hoogw 25.03.2016 - 16:57

Lea otras preguntas en las etiquetas