2012-07-10 79 views
0

負載功能當谷歌地圖v3 markercluster中按下關閉按鈕時,infowindow未關閉。

function load() { 

       var cluster = []; 
       infoWindow = new google.maps.InfoWindow();   

       var map = new google.maps.Map(document.getElementById("map"), { 
         center: new google.maps.LatLng(10.6145, -24.3418), 
         zoom: 2, 
         mapTypeId: 'roadmap' 
         }); 


       // Read the data from example.xml 
       downloadUrl("phpsqlajax_genxml.php", function(data) { 
       var xml = data.responseXML; 
       var markers = xml.documentElement.getElementsByTagName("marker"); 

       for (var i = 0; i < markers.length; i++) { 
        // obtain the attribues of each marker 
        var name = markers[i].getAttribute("name"); 
        var address = markers[i].getAttribute("address"); 
        var link = markers[i].getAttribute("link"); 
        var type = markers[i].getAttribute("type"); 
        var point = new google.maps.LatLng(
         parseFloat(markers[i].getAttribute("lat")), 
         parseFloat(markers[i].getAttribute("lng"))); 

        var html = "<b>" + '<a href="' + link + '" >' + markers[i].getAttribute("name") + '</a>' + "</b> <br/>" + "</b> <br/>" + '<a href="' + link + '" >' + markers[i].getAttribute("address") + '</a>'; 

        var icon = customIcons[type] || {}; 

        // create the marker 
        var marker = new google.maps.Marker({ 
        map: map, 
        position: point, 
        icon: icon.icon, 
        shadow: icon.shadow 
        }); 


       addMarker(marker, html); 



       cluster.push(marker); 

       } 
       var mc = new MarkerClusterer(map,cluster); 

       //markerCluster = new MarkerClusterer(map, gmarkers); 
       }); 
    } 

添加標記

function addMarker(marker, content) 
    { 


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

     infoWindow.setContent(content); 
     infoWindow.open(map, marker); 
     infoWindow.close(); 


    }); 

    } 

代碼爲Ajax

function downloadUrl(url, callback) { 
    var request = window.ActiveXObject ? 
     new ActiveXObject('Microsoft.XMLHTTP') : 
     new XMLHttpRequest; 

    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     request.onreadystatechange = doNothing; 
     callback(request, request.status); 
    } 
    }; 

    request.open('GET', url, true); 
    request.send(null); 
} 
+0

「負載函數功能負載(){」。這是你在那裏有趣的功能。 – jeff 2012-07-10 07:24:51

+0

儘管如此,編輯您的問題,以便代碼格式正確。這很難看,因爲它是。 – jeff 2012-07-10 07:25:48

+0

函數名稱是加載.. – 2012-07-10 07:27:02

回答

1

如果您單擊羣集標記,一個 「clusterclick」 事件被觸發。

添加一個事件監聽器的然後關閉信息窗口:

var mc = new MarkerClusterer(map, cluster); 

google.maps.event.addListener(mc, 'clusterclick', function() { 
    infoWindow.close(); 
});