我有一个应用程序,可以使用Leafletjs在地图上显示最近的作业。
使用Leafletjs时,如果要缩放到用户检测到的位置,可以调用以下内容:
map.locate({'setView' : true, 'timeout' : 10000, maxZoom: 10});
但是,对于某些位置,缩放级别10不包含任何作业点,因此我想动态设置缩放,以便至少在作业上对用户可见。
我知道我可以听取locate函数的成功,然后查看类似的内容:
map.on('locationfound', function() {
//for marker in markers{
//is point within currently visible bounds
//break on first positive
//else,
//zoom up a level, repeat previous checks
}
}
但效率很低,特别是如果我有很多分数。
Leaflet是否有任何内置函数/方法来提供有关当前地图视图中图层的信息?
答案 0 :(得分:0)
如果您在服务器端执行某些操作,则可以足够快地进行计算。
你的SQL会是这样的(对不起,我是懒惰的,从记忆/思考中做而不是实际尝试它)
SELECT count(*) WHERE (vcsX>>(zoom+8)==userX>>(zoom+8)) AND (vcsY>>(zoom+8)==userY>>(zoom+8));
其中vcsX和vcsY是Vast Coordinate System中的像素坐标。