在Google地图上使用80,000个标记来加速页面

Ele*_*ena 5 javascript jquery google-maps

我想在Google地图上加载80,000个标记,我具有函数setMarkers()和createMarker()。加载时间很长。如何加快页面速度?

代码如下:

function initialize() {
    //markers details are coming from json file
    setMarkers(map, markers);
}
function setMarkers(map, locations) {
    //from location object, all the variables get values
    //infobox code
    //loop starts for all markers
    createMarker( arguments );
    //loop end for all markers
}
function createMarker( arguments ) {
    //marker creation code
}
Run Code Online (Sandbox Code Playgroud)

还可以使用Google Map购买的API密钥来提高速度吗?

Tho*_*tos 5

以下是一些优化标记的方法:

  1. 基于网格的聚类。基于网格的聚类通过将地图划分为一定大小的正方形(大小随每次缩放而变化),然后将标记分组到每个网格正方形中来工作。
  2. 基于距离的聚类。基于距离的聚类类似于基于网格的聚类,除了代替创建固定正方形边界的聚类以外,基于标记和聚类质心之间的距离创建聚类。
  3. 视口标记管理。视口标记管理器的工作方式是获取用户可见的地图当前边界,然后根据地图边界,向服务器发送查询以获取位于边界内的所有标记。当用户平移/缩放地图时,后续请求将发送到服务器以获取新标记。通常会删除不再可见的所有标记,以提高地图性能。
  4. 融合表。通过使用JavaScript API中的FusionTablesLayer,可以在地图上显示大量点。由于渲染是在Google服务器上而不是在用户的浏览器中执行的,因此性能得到了极大的改善。
  5. markerCluster(就我的经验而言,最好使用Marker Clusterer Plus,因为它的bug少且性能更好)。MarkerClusterer是一个客户端实用程序库,可将基于网格的群集应用于标记的集合。它通过迭代要聚类的集合中的标记并将每个聚类添加到最近的聚类(如果它们在最小正方形像素范围内)来工作。
  6. MarkerManager。MarkerManager允许您更离散地定义希望在不同缩放级别下可见的标记。与MarkerClusterer相比,MarkerManager的设置更加复杂,但是它确实允许对显示内容和位置进行更多自定义。

注意:不要忘记标记具有经过优化的选项,但是如果您使用动画gif或PNG,则标记将不会为真,因此,如果使用该类型的文件,请三思而后行。