我正在使用 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/