2012-10-03 91 views
2

我根本不知道javascript,但我設法讓我的地圖上的所有東西都工作,除了這一件事。我正在爲論壇的成員發送他們的城市和州的功能,並將其添加到地圖中。這裏是我有:http://l4ptester.solidwebhost.com/L4p.html 如果你點擊幾個地圖標記你會發現,你可以有任意多的infoWindows打開在任何時候,只要你喜歡,我不想這樣。我只有一個人希望infoWindow一次打開。所以如果我在佛羅里達點擊一個標記,然後在加利福尼亞點一個標記,那麼佛羅里達的那個將會關閉。Google API V3一次只能打開一個infoWindow

下面是一個地圖標記中的條目看起來像在我的代碼:

var InvadermooseLL = new google.maps.LatLng(27.321984,-82.527666); 
    var contentString = 
    '<div id="content">'+ 
    '<center> <strong>Invadermoose</strong> </center>'+ 
     '<img src="http://www.luxury4play.com/customavatars/avatar16771_3.gif">'+ 
     '<div id="bodyContent">'+ 
     '<a href="http://www.luxury4play.com/members/invadermoose.html" '+ 
     'target="_blank">Invadermoose&#39;s L4P Profile</a>'+ 
     '<br/><font size="2">(Opens in new tab)</font>'+ 
     'City: Sarasota'+ 
     'State: Florida'+ 
     '</div>'+ 
     '</div>'; 

var InvadermooseIW = new google.maps.InfoWindow({ 
    content: contentString 
}); 

var InvadermooseMKR = new google.maps.Marker({ 
    position: InvadermooseLL, 
    map: map, 
    title:"Invadermoose" 
}); 

google.maps.event.addListener(InvadermooseMKR, 'click', function() { 
    InvadermooseIW.open(map,InvadermooseMKR); 
    IrelentlessIW.close(map,IrelentlessMKR); 
    Hollywood85IW.close(map,Hollywood85MKR); 
    HazeMythIW.close(map,HazeMythMKR); 
    jagkidIW.close(map,jagkidMKR); 
    DiegoVIW.close(map,DeigoVMKR); 
    RaceMindedIW.close(map,RaceMindedMKR); 
}); 

我會解釋這一點。 Invadermoose是獲取地圖標記的用戶,因此我將其用作ID以保持其組織性。因此var InvadermooseLL基本上是Invadermoose LatLang,InvadermooseMKR是Invadermoose Marker。它只是幫助我保持組織。

現在,在腳本的底部,我擁有所有'點擊'功能。它看起來像它會關閉其他成員標記,但它不起作用。我在堆棧溢出的地方讀到了這是做到這一點的方法,但它不會工作。

我基本上對每個有地圖標記的用戶重複這個相同的代碼,我只是用我的識別前綴(LL,MKR,IW)和一些'點擊'功能將ID更改爲他們的用戶名。

回答

0

這比您想象的要容易得多,您可以在示例中找到解決方案是重用InfoWindow。這比爲每個用戶創建一個新的要乾淨得多。如果只有一個InfoWindow,您可以簡單地更新它的位置,並且InfoWindow在舊位置關閉,並在新位置再次打開。

這樣做的副作用是,不可能同時打開多個InfoWindow,因爲實際上只有一個。

相關問題