2010-08-18 56 views
1

關於在谷歌地圖API V3到信息窗口這個問題..JavaScript的谷歌地圖API - 一個信息窗口一個同時打開..

目前我這個循環功能和位置標記..

function addPostCode(zip, html) 
{ 
    geocoder.geocode({ 'address': zip}, function(results, status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location, 
     name: zip 
     }); 
}); 

現在我想用獨特的HTML添加一個信息窗口,但是我想以下行爲..

當一個信息窗口由一個樓盤開盤時,任何當前信息窗口將關閉,只留下新一本..

這是可能的,我將如何去解決它?在這個問題上尋找文件證明是困難的。

回答

3

在初始化中創建一個infowindow。在您想要打開infowindow的事件/偵聽器中,您可以設置內容並在地圖上的標記/位置上打開infowindow。

// Initialize infowindow 
var infowindow = new google.maps.InfoWindow({content: ''}); 

function add_marker(point, name, content) 
{ 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     dragable: false, 
     clickable: true, 
     name: name 
    }); 
    marker.content = content; 
    google.maps.event.addListener(marker, 'click', function() 
    { 
     infowindow.content = marker.content; 
     infowindow.open(map, marker); 
    }); 
    return marker; 
}; 

function addPostCode(zip, html) 
{ 
    geocoder.geocode({ 'address': zip}, function(results, status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
     map.setCenter(results[0].geometry.location); 
     var marker = add_marker(results[0].geometry.location, zip, html) 
     }); 
}); 

這個問題和答案幫了我不少與單個或多個信息窗口的問題:

Google Maps API v3 adding an InfoWindow to each marker

+0

該示例就在代碼中。 – sevenseacat 2012-02-17 07:11:59

0

你可能最好問Google Groups for the Google Maps API v3關於這個,以及任何其他相關的問題。

我還沒有使用API​​ v3,但據我所知,一次只能打開一個信息窗口,所以這會自動發生。

0

有兩種方法做到這一點...首先是要創建單個信息窗口,只需使用信息窗口的.setOptions方法即可更新content

第二種方法是在代碼中設置一個模塊級變量以包含「活動」窗口......然後如果有任何infoWindow已打開,請在打開新窗口之前將其稱爲.close方法。

1
var currentInfoWindow = ''; //Global variable 

google.maps.event.addListener(marker, 'click', function() 
    { 
     if(currentInfoWindow != '') 
     { 
     currentInfoWindow.close(); 
     currentInfoWindow = ''; 
     } 
     var infoWindow = new google.maps.InfoWindow({content: 'COntent'}); 
     infowindow.open(map, marker); 
     currentInfoWindow = infowindow; 
    }); 
相關問題