2014-02-22 53 views
-1

使用循環顯示在谷歌地圖的標記,我發現以前的Windows不會關閉,即使我有一個聽衆谷歌地圖環標記不會關閉以前的信息窗口

這裏是我的代碼(設定數量限制爲50故意)如果用戶的位置信息集

function loadGmodule() { 

     var map = new google.maps.Map(
     document.getElementById('gmashup'), { 
      center: new google.maps.LatLng(20, 0), 
      zoom: 1, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 



     for (var i=0;i<50;i++) { 

     u = users[i]; 

     if (u.lat) { 


     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(u.lat, u.lang), 
      map: map 
     }); 

     infoContent[i] = '<table ><tr><td><img src=\"'+u.avatar+'\" width=\"60\" height=\"75\"></td>'; 
     infoContent[i] = infoContent[i] + '<td><b><a href=\"index.php?option=com_comprofiler&task=userProfile&user='+u.user_id+'&Itemid=100004\">'+u.firstname+' '+u.middlename+' '+u.lastname+'</a></b><br />'+u.designation + '<br />'+u.company+'<br />'+u.city+'</td>'; 
     infoContent[i] = infoContent[i] + '</tr></table>'; 

     var infoWindow = new google.maps.InfoWindow(); 

     infoWindow.setContent(infoContent[i]); 

     addInfoWindowOnEvent(marker, infoWindow, map, 'click'); 

     } 

     } 

} 

和功能/監聽器顯示標記

function addInfoWindowOnEvent(marker, infoWindow, map, event) { 
    google.maps.event.addListener(marker, event, function() { 
     infoWindow.close(); 
     infoWindow.open(map, marker); 
    }); 
} 

任何人都可以提出建議的最佳位置,以PU t infoWindow.close(),以便在單擊另一個引腳時先前的窗口將關閉。

預先感謝任何幫助

+0

下調的聲譽和沒有任何幫助,因爲它「可能」有重複。那麼我讀了你的'重複',沒有人回答我的問題,爲什麼我提供的完成代碼關閉命令不關閉窗口。我認爲所有提到谷歌地圖api的人現在都會被降級?感謝偉大的社區精神,並確保我沒有得到任何幫助,因爲降級 – MOLEDesign

+0

是的,只是再次經歷,只有一個關閉的例子,這是一個鼠標懸停鼠標..兩個完全分開的事件,這很容易。沒有一個例子像我的同一事件一樣。所以,不,不是重複的。 – MOLEDesign

回答

0

即使編輯表示的重複,它不是要在所提供的鏈接找到。然而(儘管我認爲這是一個黑客,但它會做)有哪些這裏工作

Google Maps API v3 (one infowindow open at a time)

我改變了我的功能

function addInfoWindowOnEvent(marker, infoWindow, map, event) { 
    google.maps.event.addListener(marker, event, function() { 
    if($('.gm-style-iw').length) { 
     $('.gm-style-iw').parent().remove(); 
    } 
    infoWindow.open(map,marker); 
    }); 
} 

答案,現在只有一個窗口保持打開狀態

0

對於每個標記,您正在創建新的infowindow。如果你想關閉以前的infowindow,並且只打開一個,那麼僅創建一個infowindow就足夠了。這應該是全球性:

var infoContent = []; 
var infoWindow; 

function loadGmodule() { 
    var map = new google.maps.Map(
    ... 
infoWindow = new google.maps.InfoWindow(); 

//for (var i = 0; i < 50; i++) { 
for (var i = 0; i < users.length; i++) { 
... 

,然後提供具體內容事件偵聽器:

  ... 
      infoContent[i] = infoContent[i] + '</tr></table>'; 

      //infoWindow = new google.maps.InfoWindow(); 
      //infoWindow.setContent(infoContent[i]); 
      addInfoWindowOnEvent(marker, infoContent[i], map, 'click'); 
     } 
    } 
} 


function addInfoWindowOnEvent(marker, infoContent, map, event) { 
    google.maps.event.addListener(marker, event, function() { 
     infoWindow.close(); 
     infoWindow.setContent(infoContent) 
     infoWindow.open(map, marker); 
    }); 
}