我正在使用带有codeigniter的googlemaps V3 codeigniter类(显然)从我的数据库中循环遍历位置并输出一个包含所有位置的地图。问题是我有超过7000个placemarkers,因此生成的javascript很大,页面加载时间非常慢。是否有更好的方法来输出此映射以减少开销?
我已经对标记进行了聚类,但是当地图加载时,浏览器会在其联系谷歌时冻结
由于
答案 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)
你可以尝试,