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

相关问题