2012-11-13 84 views
0

我有一個谷歌地圖,像這樣:如何使用Google Maps API v3多次設置縮放?

var map_options = {   
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    streetViewControl: false 
}; 
var map = new google.maps.Map(mapDiv, map_options); 

我執行一個Ajax調用,它將在地圖上,並在通話的beforeSend我改變基於用戶選擇的地點在地圖的縮放級別的一些標記。這是所有罰款和花花公子..

$.ajax({ 
    url: myServiceUrl, 
    dataType: 'jsonp', 
    beforeSend: function() {      
     setMapZoom(); 
    },    
    success: function (data) { 
     //do work 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert(errorThrown); 
    }    
}); 

function setMapZoom() {  
    var z_level = getMapZoomLevel(googleplace.geometry.viewport); 
    map.setCenter(googleplace.geometry.location); 
    map.setZoom(z_level); 
} 

起初,這不是在所有的工作,因爲地圖API的調用是異步..所以這就是爲什麼我把變焦方法在beforeSend

但是,現在我的問題是,它只執行縮放一次。我加載加拿大安大略省多倫多的地圖 - 它以多倫多爲中心,放大至5級 - 完美。

然後我換到邁阿密,美國佛羅里達州 - 它以邁阿密爲中心很好,但它決定了縮放到9級(不是5)電話map.setZoom(9) - 但縮放停留在5.

我很欣賞任何反饋。 :)

謝謝!

+0

我認爲你的代碼在地圖仍然加載瓷磚期間設置了縮放(9)。 – wf9a5m75

+0

setMapZoom()函數在標記被請求之前被調用.. –

+0

我明白了。你能給我一個你的網頁鏈接嗎? – wf9a5m75

回答

0

你有期望的視口,你爲什麼不使用它?

map.fitBounds(googleplace.geometry.viewport); 
+0

我試過這個。我相信現在在jsbin中設置第一個評論者是正確的之後。標記的加載時間過長。 –

0

解決:

事實證明..老鄉編碼器在這裏打電話一些代碼來清除變焦事件用戶定義的監聽器。他不知道這也清楚谷歌定義的聽衆.. :)

也許這將有助於未來的人。

相關問題