根据当前视图边界加载地图对象

时间:2015-05-12 21:34:09

标签: javascript ruby-on-rails google-maps google-maps-api-3

我有一个带有谷歌地图的Rails网络应用程序,它显示来自Mongoid数据库的标记。

标记的数量非常高并且一次加载它们非常耗费时间和资源。因此,我根据地图的当前视图边界加载对象,但有一个问题:

当边界发生变化(bounds_changed事件)时,需要加载新对象,但我不想添加重复的标记。我没有找到任何方法这样做,除了创建所有加载对象的索引,然后比较每个加载的对象。但我认为可以采用更有效的方式。

https://github.com/shvelo/pathfinder https://github.com/shvelo/pathfinder/blob/master/app/assets/javascripts/client.js

1 个答案:

答案 0 :(得分:1)

我在你的git repo中找不到 bounds_changed 事件,但你几乎可以从我收集的内容中做到这一点。例如:

var loaded = {"markerID1":true, "markerID2":true, ...};

if(!(marker in loaded)){
//Do stuff
}

目前还没有更好的方法。虽然,ECMAScript 6很快就会出现新标准,并且它实现了一个真正的Set对象。