2010-10-29 25 views
2

我一直在尋找解決這個問題的方法。我獲取標記的動態位置,並顯示在我的應用程序中選定的城市定位和縮放的地圖。如果我然後滾動或動畫Google地圖,然後請求更新標記位置(通過獲取xml),我鬆開了新的位置並放大了我所處的位置。如何使函數檢查當前的getCenter和getZoom將用於重新載入地圖?谷歌地圖 - 重新加載動態地圖指針時保持當前位置和縮放

function load() { 

if(map) { // Does not work 
    var lat = map.getCenter().lat(); 
    var lng = map.getCenter().lng(); 
     var zoom = map.getZoom(); 
} else { 
    var lat = '<?=$Lat?>'; 
    var lng = '<?=$Lon?>'; 
    var zoom = <?=$zoom?>; 
} 
var map_options = { 
    center: new google.maps.LatLng(lat,lng), 
    zoom: zoom, 
    mapTypeId: '<?=$map_type?>' 
}; 

var map = new google.maps.Map(document.getElementById("map"), map_options); 
var infoWindow = new google.maps.InfoWindow; 

    << Other marker creating code here that works fine >> 

} 
+0

喜山谷。你有嘗試使它全球變種?像 mapdata = {lat:「」,lng:「」,zoom:「」}在函數load(){}之外? – jebberwocky 2010-10-29 05:50:00

+0

好吧,但我不明白我怎麼能得到的getCenter和getZoom之前的「新的google.maps()」的值,他們在map_options – DRAllan 2010-10-29 13:39:11

回答

1

刪除var?使緯度,經度,放大全局變量

if(map) { // Does not work 
    lat = map.getCenter().lat(); 
    lng = map.getCenter().lng(); 
    zoom = map.getZoom(); 
} else { 
    lat = '<?=$Lat?>'; 
    lng = '<?=$Lon?>'; 
    zoom = <?=$zoom?>; 
} 

UPDATE 移動var mapfunction load() {} 是這樣的:

var map, lat, lng, zoom; 
function load(){...map = new google.maps.Map(document.getElementById("map"), map_options); 

...}

讓我就會解釋這個

  1. whe否Page加載VAR地圖開始爲「無/空」,因此,如果(地圖)會是假的,然後 從PHP使用的緯度,經度,變焦

  2. map = new google.maps.Map(document.getElementById("map"), map_options);後,地圖持有人的JS 對象GMAP。

  3. 然後負載(){...}被稱爲再次if(map)爲真,那麼 塊將被執行
+0

感謝您的建議,但我沒有真正的理解。我更像一個PHP程序員,所以我正在努力與JavaScript。我可以看到if(map)永遠不會返回true的原因是代碼「var map = new google.maps.Map(document.getElementById(」map「),map_options);」之後,但我可能會誤解PHP的想法。我在調用load()函數的頁面上有一個按鈕。我需要嘗試獲取當前位置並縮放,然後再次開始初始化地圖。 – DRAllan 2010-10-29 13:09:17

+0

嗨DRAllan我的答案已更新。希望它有幫助 – jebberwocky 2010-10-29 14:42:49

+0

謝謝。我現在明白,它完美的作品。 :) – DRAllan 2010-11-01 12:15:46

相關問題