获取放大地图的位置:传单

时间:2017-03-28 08:53:56

标签: javascript leaflet

我在使用传单时相当新。有人能告诉我,我可以获得我完成缩放的区域的经度和纬度吗?我如何知道该区域有多少物体?

2 个答案:

答案 0 :(得分:2)

首先你需要捕获zoomend事件,在一个事件对象里面将是map实例,你可以从中获取boundingBox。
然后为你检查每一层是否在bbox内。

map.on('zoomend',function(e){
  var map = e.target,
  bounds = map.getBounds();
  map.eachLayer(function(layer){
    if(bounds.contains(layer.getBounds()))
      alert('kek');
  }); 
})

答案 1 :(得分:1)

假设您有一个名为map的{​​{3}}对象。在这种情况下,map.getBounds()会返回L.map个对象,该对象包含_southWest_northEast成员。这些是定义边界矩形的左下和右上地理点。如果你有一组标记,那么迭代这组标记并检查它们是否在边界内,如下所示:

function getMarkersInside(bounds, markers) {
    var subset = [];
    for (var markerIndex in markers) {
        if ((markers[markerIndex].lat >= bounds._northEast.lat) && (markers[markerIndex].lat <= bounds._southWest.lat) && (markers[markerIndex].lon >= bounds._northEast.lon) && (markers[markerIndex].lon <= bounds._southWest.lon)) {
            subset.push(markers[markerIndex]);
        }
    }
    return subset;
}

你可以这样称呼它:

var markersInside = getMarkersInside(map.getBounds(), myMarkers);

确保您在zoomend上执行此操作。