2011-02-18 84 views
1

我正在顯示帶有地標和KML疊加層的地圖。當用戶點擊時,我希望當用戶返回時記住地圖的狀態。記住Google地圖v3的狀態

第一個問題是:我能否以某種方式保存地圖的整個狀態;覆蓋和一切?現在,我一直保存lat/long和zoom,然後重播任何KML覆蓋圖,但是甚至沒有取得任何成功。我在更改的邊界或窗口卸載事件上保存了Cookie,但問題是加載保存的值。原因是地圖加載異步。我嘗試過使用地圖閒置事件,但它不止一次觸發。似乎着火了,在處理程序中運行我的代碼,然後在完成我的代碼時再次啓動。無限循環?無論如何,重放KML覆蓋層會完全覆蓋指定的任何緯度/長度/縮放比例。

所以主要的問題是:你如何恢復一個保存的地圖及其所有疊加層?

回答

2

我不認爲谷歌地圖可以保存地圖的狀態,你必須自己做。

您正確使用空閒事件來初始化疊加層。空閒事件被觸發每一個地圖變得縮放或平移後的空閒時間,所以如果你想爲閒置事件(或任何其他活動)一次的傾聽者,你能做到這樣:

var map = new google.maps.Map(document.getElementById("map"), myOptions); 
var initListener = google.maps.event.addListener(map, 'idle', function() { 
    // do your code here 
    google.maps.event.removeListener(initListener); 
}); 

如果你想在加載kml後保留縮放和地圖中心,必須使用KmlLayer的選項preserveViewport:

var kmlLayer = new google.maps.KmlLayer(myKml.kml, {preserveViewport: true}); 
+0

感謝您的幫助。 – Neil 2011-02-24 09:31:24