Клацніть Події за допомогою Leaflet та geoJSON


18

Як я можу приєднати подію клацання до geoJSON, який виконує функцію Ajax при натисканні на неї. Я переглянув, onEachFeatureале це виконується при завантаженні geoJSON, а не при натисканні, таким чином виконуючи тонну викликів Ajax!

Відповіді:


22

Ви були в правильному шляху з onEachFeature.

Просто потрібно зв’язати натиснення події на кожен елемент.

Дивіться нижче (перевірено)

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

Ви можете зробити це з трохи меншим кодом, ніж версія 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

просто інший спосіб, як вбудована функція

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);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.