2015-09-15 111 views
0

是否可以通過增量2進行放大並以3爲增量進行縮小?本質上,我試圖跳過某個縮放級別。例如:http://jsfiddle.net/j1sr3zho/即使放大和縮小Google地圖

我試圖檢測放大和縮小事件發生時,所以我可以得到我想要的,但我得到Uncaught RangeError: Maximum call stack size exceeded錯誤。

google.maps.event.addListener(map, 'zoom_changed', function() { 
    if (map.getZoom() > zoom) { 
     map.setZoom(map.getZoom() + 2); 
     console.log("zoomed in"); 
    } else if (map.getZoom() < zoom) { 
     map.setZoom(map.getZoom() - 3); 
     console.log("zoomed out"); 
}); 

如果可能的話,我也需要它在移動版Google地圖上工作。

+0

您確定要這麼做嗎?這將是一個非常令人沮喪和令人困惑的用戶體驗。你能解釋一下目的嗎? –

+0

@MichaelGeary這取決於它是否可能。在縮放16時,地圖上只有很多數據,因此會減慢速度。這就是爲什麼我試圖跳過它。 – mapr

+2

遞歸太多。每次調用'setZoom'時,都會再次觸發'zoom_changed'事件 – duncan

回答

2

這裏的問題是zoom_changed偵聽器即使在地圖上設置縮放時也會觸發。您應該嘗試檢測zoom_changed是由鼠標事件觸發還是設置標誌以防止遞歸。

this updated jsfiddle,其中防止遞歸通過設置一個標誌:

{ 
    if (flag){ 
     flag=false; 
     //zoom logic 
     map.setZoom(newZoomLevel); 
    } 
    flag=true; 
}