我在使用传单时相当新。有人能告诉我,我可以获得我完成缩放的区域的经度和纬度吗?我如何知道该区域有多少物体?
答案 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
上执行此操作。