1

Я использовал образец кода из google для markerclusterer. Я добавил код для отображения координаты маркера в infowindow для markerclusterer v3, но проблема в том, что он загружает последний маркер latlang в окно: может ли кто-нибудь помочь решить эту проблему.Markerclusterer и infowindow v3 не работают должным образом

function initialize() { 
    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 
    }); 

    google.maps.event.addListener(map, 'click', function() { 
    infowindow.close(); 
    }); 

    var markers = []; 
    for (var i = 0; i < 100; i++) { 
     var dataPhoto = data.photos[i]; 
     var latLng = new google.maps.LatLng(dataPhoto.latitude, 
      dataPhoto.longitude); 
     var info = dataPhoto.photo_id; 
     var marker = new google.maps.Marker({ 
     position: latLng 


     }); 

    google.maps.event.addListener(marker, 'click', function() { 

    infowindow.setPosition(latLng); 
    infowindow.setContent(latLng.toString()); 

    infowindow.open(map,marker); 


    }); 
     markers.push(marker); 

    } 



    var markerCluster = new MarkerClusterer(map, markers); 
    } 


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

    var infowindow = new google.maps.InfoWindow(
    { 
    size: new google.maps.Size(150,50) 
    }); 

</script>` 
+0

возможно дубликат [Google Maps JS API v3 - Простой Multiple Marker Пример] (http://stackoverflow.com/questions/3059044/google-maps-js-api -v3-простой множественным маркер-пример) – geocodezip

ответ

2

Здесь я нашел ответ, используя предоставленную подсказку @geocodezip. Событие должно добавление слушатель быть изменен следующим образом:

google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(marker.position.toString()); 
     infowindow.open(map, marker); 
    } 
    })(marker, i));