0

我是Javascript新手,我創建了一個Google地圖: Using MySQL and PHP with Google Maps和MarkerClusterer。使用MarkerClusterer顯示與infowindow中每個標記關聯的內容

經過幾個小時的研究,它運作良好,但我仍然有問題。我需要有一個infowindow點擊每個標記。所以,我在我的圈子裏添加了一個事件監聽器。

問題是:對於所有標記,它顯示與我的xml文件的最後一行內容相同的內容。

下面的代碼:

function initMap() 
    { 
       var map = new google.maps.Map(document.getElementById('map'), { 
       center: new google.maps.LatLng(48.85, 2.4), 
       zoom: 6 
       }); 
       //taille de la fenêtre d'information 
       var infoWindow = new google.maps.InfoWindow({ 
         maxWidth: 400 
         }); 

       // Change this depending on the name of your PHP or XML file 
       downloadUrl(sourcexml, function(data) 
       { 
       var xml = data.responseXML; 
       var clusteredmarkers = []; 
       var markers = xml.documentElement.getElementsByTagName("marker"); 

         for (var i = 0; i < markers.length; i++) 
         { 
            var idcart = markers[i].getAttribute('id'); 
            var name = markers[i].getAttribute("titre"); 
            var description = markers[i].getAttribute("description"); 
            var type = markers[i].getAttribute("categorie"); 
            var point = new google.maps.LatLng(
             parseFloat(markers[i].getAttribute("lat")), 
             parseFloat(markers[i].getAttribute("lng"))); 


            var image = customImage[type] || {}; 
            var marker = new google.maps.Marker({ 
            map: map, 
            position: point, 
            icon: image.image, 
            title: name 
            }); 


            google.maps.event.addListener(marker,'click', function() { 
            infoWindow.setContent(description); 
            infoWindow.open(map, this); 
            }); 

            clusteredmarkers.push(marker); 

         } 

         var markerCluster = new MarkerClusterer(map,clusteredmarkers,{imagePath: 'images/m/m'}); 

       }); 
    } 

任何建議,將非常感謝,謝謝:-)

回答

0

當你裏面創造新的標記保存它描述。

var marker = new google.maps.Marker({ 
    map: map, 
    position: point, 
    icon: image.image, 
    title: name, 
    description: description 
    }); 

addListener使用保存在被點擊的標記中的描述。

google.maps.event.addListener(marker,'click', function() { 
    infoWindow.setContent(this.description); 
    infoWindow.open(map, this); 
}); 

如果你想了解什麼是在for循環發生閱讀: JavaScript closure inside loops – simple practical example

+0

它的工作原理!非常感謝 ! – Paul

相關問題