php - 显示带有 7000 多个地点标记的谷歌地图的最佳方式是什么

标签 php javascript google-maps

我正在使用 googlemaps V3 codeigniter 类和 codeigniter (显然)来循环访问我的数据库中的位置,并输出一张 map ,其中绘制了所有位置。问题是我有超过 7000 个地标,因此生成的 javascript 很大并且页面加载时间非常慢。有没有更好的方法来输出此 map 以减少开销?

我已经对标记进行了聚类,但是当加载 map 时,有时浏览器会在与谷歌联系时卡住

谢谢

最佳答案

我认为问题是,如果内存中有那么多标记,浏览器就会变得非常慢。

前段时间我遇到了类似的问题,我们最终所做的是仅加载可见标记,并在用户通过 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()));
 });

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

实现这一点的另一种方法稍微复杂一些,那就是在服务器端的自定义覆盖图 block 中呈现制作者。但我认为你需要一个 map 服务器才能做到这一点。您可以在谷歌地图文档中阅读更多相关信息

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

关于php - 显示带有 7000 多个地点标记的谷歌地图的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349984/

相关文章:

javascript - 尝试导航时模型方法错误

google-maps - 计算经度/纬度

php - ON DUPLICATE KEY UPDATE - 当 if 语句为 true - 更新列,否则触发 1062 错误以捕获重复

php glob 获取正确的路径

javascript - ajax登录表单不起作用

javascript - 如何在我自己的自定义字段中使用 JIRA AUI 函数 - velocity edit.vm

php - 在 PHP 中的类方法中使用命名空间

javascript - 在jquery中向上滚动时如何使类消失

google-maps - 在哪里可以找到 Google Maps v3 markermanager.js

ios - 如何从 Google map 地理定位标记 (iOS) 中删除箭头?