Clique em Eventos com Folheto e geoJSON


18

Como anexar um evento click a um geoJSON que, em seguida, executa uma função Ajax quando clicado. Eu examinei, onEachFeaturemas ele é executado quando o geoJSON é carregado, não quando clicado, executando assim uma tonelada de chamadas ajax!

Respostas:


22

Você estava no caminho certo com onEachFeature.

É só que você precisa vincular o clique do evento em cada elemento.

Veja abaixo (testado)

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

Você pode fazer isso com um pouco menos de código que a versão do 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

apenas outra maneira como função embutida

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);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.