Google Maps API v3,大量标记,群集和性能

时间:2011-02-27 11:42:45

标签: performance google-maps google-maps-api-3 google-maps-markers cluster-analysis

我需要在Google地图上渲染大约5000个标记。我目前正在使用API​​(v3),并且在较慢的机器上存在性能问题,尤其是在IE中。我已经做了以下工作来帮助加快速度:

  1. 使用了一个简单的标记类,它扩展了OverlayView并为每个标记
  2. 呈现单个DIV元素
  3. 实施MarkerClusterer库以在不同级别聚类标记
  4. 为IE渲染GIF,而不是alpha PNG
  5. 是否有更快的群集类?还有其他提示吗?我试图避免服务器端群集,除非这是将性能挤出系统的唯一选择。

    由于

2 个答案:

答案 0 :(得分:6)

我使用了一种方法,将所有标记加载到页面上,然后侦听地图以完成平移。

当地图完成平移后,我首先检查缩放级别 - 如果它太高我没有显示任何内容。如果它处于可接受的水平,我然后遍历我存储的标记,看看它们是否落入地图的边界框中。如果他们这样做,他们会得到补充。然后第二个循环删除任何已移出视图的内容。

我使用的最高数字是使用这种方法的大约30,000个标记,虽然我有它所以你必须放大很远才能看到它们。在标记浓度较高的区域,它显然有点慢,但它是可用的。

答案 1 :(得分:0)

上述解决方案适用于更多数量的标记。我们将它用于后端的数百万个GPS点(包括多边形等)。如果用户将地图移动超过X米,唯一的问题是背后的一些逻辑,如正确缓存空间查询或仅获取新结果。要完成这项工作还有很多工作要做,但是为了查看真正的大量积分,没有比这更好的了。

Marker clusteres通常在浏览器端工作,所以这些仍然需要一次加载所有点 - 这使得这个方法无法用于大数字。

你可以在http://www.tixik.com/london-2354567.htm实时查看(只需点击,计划一次旅行)并开始计划。只需尝试移动地图,放大或缩小所有点将在地图上显示/隐藏缩放/阻力。