使用MarkerClusterer,JSON / AJAX的数百万Google Map Marker

时间:2012-02-27 22:47:38

标签: ajax json google-maps

我正在开发大型地理位置网站。 Google地图上有超过250万个地方可以显示标记和信息窗口(点击标记时)。

我正在使用MarkerClusterer来缩小单个标记的负载。

但是,我担心如果浏览器(JSON等)中有如此多的数据会真正杀死该页面。

通过在更改平移时识别地图边界来加载按需加载JSON的任何建议。

对资源的任何建议也表示赞赏。

4 个答案:

答案 0 :(得分:0)

看看Cluster我认为它可以做你想做的事:

  • 实际上只创建了当前可见的标记。
  • 如果可以看到太多标记,则将它们组合在一起成为群集 标记

答案 1 :(得分:0)

你可以寻找一个四核。四元组非常适合降低维度复杂度并构建关注点的集群。有许多不同的方法,如z曲线,希尔伯特曲线,皮亚诺曲线。要进一步限制约束,您可以将群集事物附加到边界框和Google地图的缩放级别。

答案 2 :(得分:0)

有一个版本的标记Clusterer适用于google maps api的v3,但这不是问题。问题是你仍然使用JS处理浏览器中的底层数据(通过JSON / AJAX检索到250万个位置)。这很可能太多了,除非你使用速度最快的计算机进行快速连接。

对于那些在自己的网站上考虑此问题的人,请记住,越来越多的移动设备正在访问这些网站,而这些设备上的javascript几乎无法处理这么多点。我自己的网站打破了iOS6的最新版本,现在我必须通过将我的js更改为更容易的系统负载来适应。

但是要回到手头的答案,你需要做的是每当地图边界发生变化时进行新的ajax调用,如果变焦太大,你将不得不限制检索的数量并实现一些系统向用户显示并非所有结果都显示出来。如果我没记错的话,我的网站使用了250的限制,并在位置周围显示了一个边界矩形(以及用于聚类它们的markerclusterer)。在填充真实数据之前,我做了成千上万的测试数据库,这个数字似乎是性能和信息的最佳权衡。 (但那是在我移动之前和api的v3之前)。 v3应该更精简,但移动设备有限,所以你必须测试。

答案 3 :(得分:0)

我正在使用标记聚类器加上库,标记大小上限为200,默认缩放级别为8.在缩放更改或拖动时,另外200个标记将出现在地图上。

如果缩小,标记将被聚类,反之亦然。