Fai clic su Eventi con Leaflet e geoJSON


18

Come si allega un evento click a un geoJSON che esegue una funzione Ajax quando si fa clic. Ho esaminato onEachFeaturema ciò viene eseguito quando viene caricato geoJSON, non quando viene cliccato, quindi eseguendo una tonnellata di chiamate ajax!

Risposte:


22

Eri sulla buona strada con onEachFeature.

È solo necessario associare il clic dell'evento su ciascun elemento.

Vedi sotto (testato)

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

8

Puoi farlo con un codice leggermente inferiore rispetto alla versione di 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);

3

solo un altro modo come funzione in linea

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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.