2011-02-03 82 views
1

即時通訊使用谷歌地圖api v3。 IM通過caling此功能添加標記:infowindows上的圖釘不關閉谷歌地圖

function createMarker(posn, title, html) { 
       var marker = new google.maps.Marker ({position:posn, title: title, draggable: false}); 
       var infowindow = new google.maps.InfoWindow({content: html}); 
       google.maps.event.addListener(marker, "click", function() { 
        infowindow.open(map,marker); 
       }); 
       return marker; 
      } 

它工作正常,唯一的問題是,當我點擊一個圖釘的窗口打開,但是當我點擊另一個圖釘信息窗口窗口不會關閉這兩個信息窗口的第一個圖釘可見。

回答

0

你需要保持在一個陣列跟蹤你的信息窗口和programmaticaly關閉它們當點擊事件觸發所以使用例如

//define a global array 
infoWindows = new Array(); 

//..do your stuff 

function createMarker(posn, title, html) { 
     var marker = new google.maps.Marker ({position:posn, title: title, draggable: false}); 
     var infowindow = new google.maps.InfoWindow({content: html}); 
     //add this infowindow to an array 
     infoWindows.push(infowindow); 
     google.maps.event.addListener(marker, "click", function() { 
     //go through the array and close all open info windows 
     for (i=0;i<infoWindows.length;i++) { 
      infoWindows[i].setMap(null); 
     } 
     //open current info window 
     infowindow.open(map,marker); 
     }); 
     return marker; 
} 
0

不知道你解決了這個,但我的方式做它是:

function createMarker(posn, title, html) { 
       var marker = new google.maps.Marker ({position:posn, title: title, draggable: false}); 

       google.maps.event.addListener(marker, "click", function() { 
        infowindow.open(map,marker); 
       }); 
       infowindow = new google.maps.InfoWindow({content: html}); 
       return marker; 
      } 

這個工程,並點擊另一個引腳時關閉窗戶,但「X」關閉按鈕不起作用...