Maps 在当前地图视图中查找图层

Maps 在当前地图视图中查找图层,maps,gis,leaflet,Maps,Gis,Leaflet,我有一个应用程序,它使用传单JS在地图上显示最近的工作 使用传单JS,当您要缩放到用户检测到的位置时,您可以调用以下命令: map.locate({'setView' : true, 'timeout' : 10000, maxZoom: 10}); map.on('locationfound', function() { //for marker in markers{ //is point within currently visible bounds //break on

我有一个应用程序,它使用传单JS在地图上显示最近的工作

使用传单JS,当您要缩放到用户检测到的位置时,您可以调用以下命令:

map.locate({'setView' : true, 'timeout' : 10000, maxZoom: 10});
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
  } 
}
但是,对于某些位置,缩放级别10不包含任何作业点,因此我想动态设置缩放,以便用户至少可以看到作业中的作业

我知道我可以监听locate函数的成功,然后使用以下内容进行检查:

map.locate({'setView' : true, 'timeout' : 10000, maxZoom: 10});
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
  } 
}
但这是相当低效的,特别是如果我有大量的分数


传单中是否有任何内置函数/方法来提供有关当前地图视图中图层的信息?

如果您在服务器端执行某些操作,则计算速度可能足够快

  • 将位置以像素坐标存储在数据库中的某个放大级别(我使用缩放级别23)。我称这个坐标系为“广域坐标系”。然后,获取特定位置点的平铺坐标是IIRC一位移位——非常快,可以在SQL中执行
  • 将用户的位置转换为放大级别的像素坐标
  • 在缩放级别上迭代。获取该缩放级别上用户位置的平铺坐标,然后执行SQL查询,计算该平铺上的点数。如果>0,则停止 您的SQL将类似(抱歉,我很懒,从内存/思考而不是实际尝试)


    其中vcsX和vcsY是广域坐标系中的像素坐标。

    谢谢Kaitlin,但我真的希望在这个项目中保留它的客户端。