2011-08-02 96 views
2

我有一個標記的地圖,以及與每個標記對應的數據表。當用戶點擊表格中的一個項目時,打開相應標記的InfoWindow。當地圖縮小並且標記全部可見時,一切正常,但如果地圖放大,並且通過單擊表格中的項目打開屏幕外標記的InfoWindow,則會發生以下情況:谷歌地圖:自動平移後InfoWindow關閉

  1. 圖滾動到正確的位置,其中InfoWindow似乎已經打開
  2. 地圖停止平移和InfoWindow消失。

關於可能發生什麼以及如何解決此問題的任何建議?

+0

你能複製jsfiddle中的行爲嗎?如果您禁用自動平移並手動平移,它會保持打開狀態嗎? – lashleigh

回答

4

好吧,涉及到的事實,我用的是地圖上的Marker Clusterer問題...基本上,下面發生的事情:在表

  1. 點擊項目,InfoWindow打開
  2. 地圖被平移到要顯示的位置InfoWindow
  3. 當平移完成時,Marker Clusterer隨即重新繪製(如果需要),並強制關閉InfoWindow

我的解決辦法是,點擊表格中的項目時,我得到了相應的Marker's經緯度,手動平移到這個位置,等待平移通過「閒置」監聽完成,何時完成(和Clusterer完成了它的重繪),然後我打開InfoWindow

// get map, marker positions 
var mapLatLng = GLOBAL_map.getCenter();  
var markerLatLng = GLOBAL_markers[index].getPosition(); 

// pan the map 
if(!markerLatLng.equals(mapLatLng)) { 
    // map will need to pan 
    GLOBAL_map.panTo(markerLatLng); 
    google.maps.event.addListenerOnce(GLOBAL_map, 'idle', function() { 
    // open InfoWindow 
    GLOBAL_infowindow.setContent(GLOBAL_markers_content[index]); 
    GLOBAL_infowindow.open(GLOBAL_map, GLOBAL_markers[index]); 
    }); 
} else { 
    // map won't be panning, which wouldn't trigger 'idle' listener 
    GLOBAL_infowindow.setContent(GLOBAL_markers_content[index]); 
    GLOBAL_infowindow.open(GLOBAL_map, GLOBAL_markers[index]); 
}