【问题标题】:Get all markers in polygon in leaflet draw在传单绘制中获取多边形中的所有标记
【发布时间】:2019-06-18 07:27:17
【问题描述】:

如何获取多边形传单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上的所有标记

【问题讨论】:

    标签: javascript leaflet polygon


    【解决方案1】:

    您可能希望创建一个空数组并推送所有属于 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);
        }
      });
    });
    

    【讨论】:

      【解决方案2】:

      将您的 dranwItems 设为 Leaflet GeoJSON 图层组,并在每个标记上使用 Turfjs 或 Leaflet point-in-polygon 以了解它是否在其中一个绘制图层内,如 openstreetmap: check if a latlong is outside polygon(region) 中所述

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 2017-06-25
        • 1970-01-01
        相关资源
        最近更新 更多