Frage

Verwenden dieser Daten

   var data = {
  'address': [
    {
      'address': '7970 GLENTIES Ln'
    },
    {
      'address': '8022 Caminito Mallorca'
    },
    {
      'address': '2750 Wheatstone St # 26'
    },
    {
      'address': '335 49th St'
    }  
  ]
};

Ich schaffe es, sie zu markieren, aber ich konnte sie nicht gruppieren. Unter dem Code, den ich verwendet habe.

var markerArray = [];
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var center = new google.maps.LatLng(37.4419, -122.1419);

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 3,
      center: center,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var address;
    var markers = [];
    for (var level in data) {
        for (var i = 0; i < data[level].length; i++) {
       //   var dataPhoto = data.photos[i];
          var dataAdd =  data[level][i];
        //  alert(dataAdd.address);
        geocoder.geocode({ 'address': dataAdd.address}, function(results){            
          var marker  = new google.maps.Marker({
              map: map, 
              position: results[0].geometry.location
          });
         markerArray[i] = marker;         
        });
        }
    }
    var markerCluster = new MarkerClusterer(map, markerArray);
  }

  google.maps.event.addDomListener(window, 'load', initialize);

Wie kann ich sie gruppieren? Es scheint, dass der MarkerClusterer nicht funktioniert oder ich weiß es nicht.

War es hilfreich?

Lösung

Da die Geocode -Funktion asynchronisiert ist, müssen Sie den Marker -Clusterer erstellen, bevor die Marker erstellt wurden.

Sie sollten den MarkerClusterer erstellen, bevor Sie mit dem Geokodieren beginnen. Anstatt zu einem Marker -Array hinzuzufügen, können Sie ihn stattdessen einfach zum MarkerClusterer hinzufügen.

Andere Tipps

Ja, die Geokodierungsfunktion ist asynchron. Sie können also später einen Marker in Cluster hinzufügen, indem Sie die addmarker () -Methode verwenden.

var markerCluster = new MarkerClusterer(map, markerArray);
for (var level in data) {
    for (var i = 0; i < data[level].length; i++) {      
      var dataAdd =  data[level][i];
      geocoder.geocode({ 'address': dataAdd.address}, function(results){            
      var marker  = new google.maps.Marker({
          map: map, 
          position: results[0].geometry.location
      });
     markerArray[i] = marker;  
     markerCluster..addMarker(marker);       
    });
    }
}    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top