Получить все маркеры в многоугольнике при розыгрыше листовки - PullRequest
0 голосов
/ 18 июня 2019

Как получить все маркеры в листовке с полигонами draw?

Создать маркеры:

for (let i = 0; i < addressPoints.length; i++) {

    var point = addressPoints[i];
    var marker = L.marker(new L.LatLng(point["lat"], point["lng"]))
    .on('click', onClickMarker);

    markers.addLayer(marker);
}

И нарисовать созданный полигон

map.on(L.Draw.Event.CREATED, function (e) {
    var layer = e.layer;
    drawnItems.addLayer(layer);
    var polygon = layer.getLatLngs();
    console.log(polygon);
});

Я хочуполучить все маркеры на polygon

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Сделайте ваши dranwItems группой слоев Leaflet GeoJSON и используйте точки-полигоны Turfjs или Leaflet на каждом маркере, чтобы узнать, находится ли он в одном из нарисованных слоев, как объяснено в openstreetmap: проверьте, находится ли латлонг снаружи многоугольник (область)

1 голос
/ 18 июня 2019

Вы хотели бы создать пустой массив и передать все элементы, которые являются экземпляром L.Marker и находятся в пределах границ многоугольника.

map.on(L.Draw.Event.CREATED, function (e) {
  let layer = e.layer;
  drawnItems.addLayer(layer);
  let polygon = layer.getLatLngs();
  console.log(polygon);

  let markers = [];

  map.eachLayer((layer) => {
    if(layer instanceof L.Marker && map.getBounds().contains(polygon)) {
        markers.push(layer.feature);
    }
  });
});
...