显示包含超过7000个地点标记的Google地图的最佳方式是什么?

时间:2011-09-08 14:49:10

标签: php javascript google-maps

我正在使用带有codeigniter的googlemaps V3 codeigniter类(显然)从我的数据库中循环遍历位置并输出一个包含所有位置的地图。问题是我有超过7000个placemarkers,因此生成的javascript很大,页面加载时间非常慢。是否有更好的方法来输出此映射以减少开销?

我已经对标记进行了聚类,但是当地图加载时,浏览器会在其联系谷歌时冻结

由于

2 个答案:

答案 0 :(得分:3)

我认为问题在于,如果你在内存浏览器中有那么多的标记,那么浏览器会变得很慢。

前段时间我遇到了类似的问题,我们最终做的是只加载可见标记并在用户通过AJAX进行平移或缩放时加载/卸载它们。使用事件moveend和zoomend很容易实现。

 // Listeners

 GEvent.addListener(map2, "moveend", function() {            
         map2.clearOverlays();
         // Load markers for the current bounds and current zoom level 
         loadMarkers(map2,map2.getBounds(),map2.getBoundsZoomLevel(map2.getBounds()));
 });

 GEvent.addListener(map2, "zoomend", function() {
        map2.clearOverlays();
        // Load markers for the current bounds and current zoom level 
       loadMarkers(map2,map2.getBounds(),map2.getBoundsZoomLevel(map2.getBounds()));
 });

对于必须显示大量标记的较低缩放级别,我们将它们聚集在服务器端,并仅加载代表每个聚类的标记。

实现这一点的另一种方法是更复杂的是在服务器端渲染制造商自定义覆盖区块。但我认为你需要一台地图服务器来做到这一点。你可以在谷歌地图文档中阅读更多相关信息

http://code.google.com/intl/en/apis/maps/documentation/javascript/examples/overlay-simple.html

答案 1 :(得分:1)

你可以尝试,

  1. 服务器端群集(Example
  2. 在服务器上呈现标记(Article: Too Many Markers