加权标记Clusterer

met*_*dos 6 javascript google-maps marker google-maps-markers markerclusterer

谷歌地图有一个很好的功能叫做Marker Clusterer,它允许你将基于网格的聚类应用于一组标记.

Marker Clusterer将每个标记计为一个,它总结了网格中标记的数量.不同的是,我想为每个标记分配权重,并在群集中总结这些权重.是否可以使用Google Maps API?你知道其他任何提供类似功能的javascript库吗?

Dr.*_*lle 5

它并不像看起来那么复杂.

markerclusterer-library提供了覆盖计算器函数的选项(这是构建集群图标的功能).

将重量存储为标记的属性,例如:

new google.maps.Marker({position:new google.maps.LatLng(1,2),weight:8});
Run Code Online (Sandbox Code Playgroud)

计算器功能可能如下所示:

   var calc=function(markers, numStyles) {
      var weight=0;

      for(var i=0;i<markers.length;++i){
        weight+=markers[i].weight;
      }
        return {
        text: weight,
        index: Math.min(String(weight).length, numStyles)
      };
    }
Run Code Online (Sandbox Code Playgroud)

要应用此自定义功能:

  1. 初始化没有标记的clusterer:

    var markerCluster = new MarkerClusterer(map); 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置功能

    markerCluster.setCalculator(calc);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加标记:

    markerCluster.addMarkers(markers);
    
    Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/doktormolle/H4EJu/

该陷阱:计算器功能必须遍历所有标记(默认情况下它不会,它只计算基于这些标志数组的长度).这会影响MarkerClusterer的性能,特别是当你有很多标记时.