2014-01-30 38 views
0

我使用這個代碼:http://gmaps-samples-v3.googlecode.com/svn/trunk/places/places-search.html如何從側邊欄在谷歌地圖API的地方第二次點擊關閉信息窗口

我想側邊欄上的第二次點擊,關閉信息窗口(VAR IW) 。

function isInfoWindowOpen(iw){ 
     var map = iw.getMap(); 
     return (map !== null && typeof map !== "undefined"); 
    } 

tr.onclick=function(){ 
     google.maps.event.trigger(markers[i],'click'); 
     console.log('markers[i]: '+i); 

    if (isInfoWindowOpen(iw)){ 
     // do something if IW is open 
     iw.close(map,markers[i]); 
    } 
} 

回答

1

變化the example的showInfoWindow功能檢查,看看是否該信息窗口打開,相同的infowindow,然後關閉它,否則執行所需的處理以獲取內容。需要給標記添加一個屬性,以便可以判斷它是否是相同的。

function showInfoWindow(i) { 
    return function(place, status) { 
     if (!!iw && iw._iwId == i) { 
     iw.close(); 
     iw = null; 
     } else { 
     if (iw) { 
      iw.close(); 
      iw = null; 
     } 
     if (status == google.maps.places.PlacesServiceStatus.OK) { 
      iw = new google.maps.InfoWindow({ 
      content: getIWContent(place), 
      _iwId:i 
      }); 
      iw.open(map, markers[i]);   
     } 
     } 
    } 
    } 

working example

+0

感謝geocodezip修復它 – Sebastian

0

嘗試設置內容爲「」(標準方式關閉信息窗口) 這樣的:

tr.onclick=function(){ 
     google.maps.event.trigger(markers[i],'click'); 
     console.log('markers[i]: '+i); 

    if (isInfoWindowOpen(iw)){ 
     // do something if IW is open 
     iw.close(map,markers[i]); 
     // Set the content to '' 
     iw.setContent(''); 
    } 
} 
+0

謝謝,戈蘭但沒有奏效。我用我調用的函數更新了代碼,以檢查iw是否打開。以防萬一; o) – Sebastian

+0

奇怪我最近實現了類似的東西..你可以查看這裏關閉懸停事件信息框的例子: [link](http://stackoverflow.com/questions/13084631/google- maps-open-infowindow-on-mouseover-close-reopen-on-click) –

+0

嗨,戈蘭,我檢查了你的例子,但我不太明白它,我認爲它與我正在嘗試做的有點不同。 – Sebastian