多标记位置相同的谷歌地图

时间:2013-12-09 13:05:49

标签: google-maps google-maps-api-3 maps google-maps-markers

如何分隔出具有相同坐标的标记?

我的代码:

  function initialize() {

    var tasks = [
        [ 'title1', 44.833000, -0.567000, ],
        [ 'title2', 43.617000, 1.450000,],
        [ 'title3', 43.617000, 1.450000, ],
    ];

    var mapOptions = {zoom: 6, center: new google.maps.LatLng(46.8, 2),}

    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    var infowindow = new google.maps.InfoWindow();

    var marker, i;

    for (i = 0; i < tasks.length; i++) {

      var latlng = new google.maps.LatLng(tasks[i][2], tasks[i][3]);

      var existingMarker = tasks[i];

      console.log(existingMarker)

      marker = new google.maps.Marker({ position: latlng, title: tasks[i][1], map: map });

      google.maps.event.addListener(marker, 'click', (function(marker, i) {
      return function() { infowindow.setContent(tasks[i][0]); infowindow.open(map, marker);} })(marker, i));
    }

  }

我该怎么办? (我删除了一些示例代码)

1 个答案:

答案 0 :(得分:2)

你需要:

  1. 首先创建标记聚类器。
  2. 将标记添加到MarkerClusterer(并格式化代码,以便更容易阅读......)。

    function createMarker(latlng,text) {
      var marker = new google.maps.Marker({
        position: latlng,
        map: map
      });
    
      ///get array of markers currently in cluster
      var allMarkers = mc.getMarkers();
    
      //check to see if any of the existing markers match the latlng of the new marker
      if (allMarkers.length != 0) {
        for (i=0; i < allMarkers.length; i++) {
          var existingMarker = allMarkers[i];
          var pos = existingMarker.getPosition();
    
          if (latlng.equals(pos)) {
            text = text + " & " + content[i];
          }                   
        }
      }
    
      google.maps.event.addListener(marker, 'click', function() {
        infowindow.close();
        infowindow.setContent(text);
        infowindow.open(map,marker);
      });
      mc.addMarker(marker);
      return marker;
    }
    
  3. working example

    甚至看一看OverlappingMarkerSpiderfier.