2

カスタム情報ウィンドウをマーカーの上に浮かせようとしていますが、一度に開くことができるマーカーは 1 つだけであることに気付きました。これに対する回避策はありますか?

現時点で作成したコードは次のとおりです。

downloadUrl("AllActivityxml.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("id");
        var address = markers[i].getAttribute("id");
        var type = markers[i].getAttribute("venue_type");
        var point = new google.maps.LatLng(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lng"))
        );

        var infowindow = new google.maps.InfoWindow();
        var html = "<b>" + point + "</b>hello <br/>" + type;
        var icon = customIcons[type] || {};
        var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow,
            zIndex: Math.round(latlng.lat()*-100000)<<5
        });

        markersArray.push(marker);
        bindInfoWindow(marker, map, infoWindow, html);        


        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(html); 
            infowindow.open(map,marker);
        });
    }
});

このマップを確認すると、一度に 2 つ以上の情報ウィンドウを開くことができないことに注意してください。何故ですか?

4

1 に答える 1

2

一度に 1 つの InfowWindow のみを使用できるようにする Google Maps API v3 に暗黙の制限はありません。そのためには、コードを記述する必要があります。マーカーごとに InfoWindow が必要な場合は、1 つ作成します。

次のようなもの(テストされていません):

function createMarker(latlng, html) {
   var contentString = html;
    var infowindow = new google.maps.InfoWindow();
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
}
于 2012-12-11T17:01:40.650 に答える