Google map API:仅将 MarkerClusterer 应用于特定标记的类别

Posted

技术标签:

【中文标题】Google map API:仅将 MarkerClusterer 应用于特定标记的类别【英文标题】:Google map API : apply MarkerClusterer only to a category of specific markers 【发布时间】:2018-04-15 01:14:09 【问题描述】:

使用 MarkerClusterer,我想只对一类标记进行聚类。 我这里有 10 个标记。我只想对其中的 8 个进行聚类,使用“类型”变量,即“cluster”或“nocluster”。

听起来很简单,但我没有找到任何提示... 有什么想法吗?

谢谢

<script>

    function initMap() 

      var map = new google.maps.Map(document.getElementById('map'), 
        zoom: 8,
        center: 
          lat: 48.371310,
          lng: 7.593634
        ,
        gestureHandling: 'cooperative'
      );

      var markers1 = locations.map(function(location, i) 

        var marker = new google.maps.Marker(
          position: location,
          type: location.type
        );

      );

      // Add a marker clusterer to manage the markers. 
      var mcOptions = gridSize: 50, maxZoom: 10, styles: [
        anchor:[0,0],
        textSize: 14,
        height: 50,
        width: 50
      ]
    ;

      var markerCluster = new MarkerClusterer(map, markers1, mcOptions);

     /* end FUNCTION initMap */

    var locations = [
            num: '1', type: 'cluster', lat: 49.050288, lng: 7.950412,
            num: '2', type: 'cluster', lat: 48.929413, lng: 7.852254,
            num: '3', type: 'cluster', lat: 48.926529, lng: 7.361955,
            num: '4', type: 'cluster', lat: 48.892072, lng: 7.655839,
            num: '5', type: 'cluster', lat: 48.887685, lng: 7.785195,
            num: '6', type: 'cluster', lat: 48.857382, lng: 7.321078,
            num: '7', type: 'cluster', lat: 48.856634, lng: 7.319182,
            num: '8', type: 'cluster', lat: 48.761871, lng: 7.967141,
            num: '9', type: 'nocluster', lat: 48.736924, lng: 7.709988,
            num: '10', type: 'nocluster', lat: 48.749944, lng: 7.340100
          ];

    google.maps.event.addDomListener(window, "load", initMap);

</script>

<script src="js/markerclusterer.js"></script>

【问题讨论】:

【参考方案1】:

这很简单——如果你想要一个标记被聚集,然后将它添加到markerCluster,否则,只需使用marker.setMap(map)

google.maps.Marker 将忽略您传入的 type 键,因为它对它没有任何作用(此外,没有检索它的机制)所以您可能应该只创建两组标记:

var markersToCluster = [];
var markersToNotCluster = [];
locations.forEach(function(location, i) 
   var marker = new google.maps.Marker(position:location);
   location.type === 'something' ? markersToCluster.push(marker) : markersToNotCluster.push(marker);
);

var markerCluster = new MarkerClusterer(map, markersToCluster, mcOptions);
markersToNotCluster.forEach(function(m)  m.setMap(map); );

【讨论】:

以上是关于Google map API:仅将 MarkerClusterer 应用于特定标记的类别的主要内容,如果未能解决你的问题,请参考以下文章

打开eclipse后应该怎样安装 Google map API ?在Android sDK Manager列表中没有找到Google map API 这应该

Google Maps Place API 和 Google Maps Time Zone API 之间的区别

google map api V3 如何对marker进行操作。

Google Map API 无法插入到 url,包括 Google Map Json

请教GOOGLE MAP API国内能访问的地址

新的 Google API 密钥“Google Maps API v3”不适用于 Google Places API?