我在地圖上繪製了一系列標記(使用地圖API的v3)。谷歌地圖v3:實施分鐘。使用fitBounds時的縮放級別
在v2中,我有以下代碼:
bounds = new GLatLngBounds();
... loop thru and put markers on map ...
bounds.extend(point);
... end looping
map.setCenter(bounds.getCenter());
var level = map.getBoundsZoomLevel(bounds);
if (level == 1)
level = 5;
map.setZoom(level > 6 ? 6 : level);
這做工精細,以確保總有在地圖上顯示的細節的適當的水平。
我試圖複製在V3此功能,但setZoom和fitBounds似乎並沒有被合作:
... loop thru and put markers on the map
var ll = new google.maps.LatLng(p.lat,p.lng);
bounds.extend(ll);
... end loop
var zoom = map.getZoom();
map.setZoom(zoom > 6 ? 6 : zoom);
map.fitBounds(bounds);
我已經嘗試了不同的置換(該setZoom之前移動fitBounds,爲例如),但是我用setZoom做的事情似乎並沒有影響地圖。我錯過了什麼嗎?有沒有辦法做到這一點?
謝謝!我一直在爲此奮鬥了幾個小時! 雖然它看起來像一個錯誤。 – chris 2010-06-07 14:47:48
這是一個好方法。另一種方法是檢查當前邊界並擴展邊界,即http://stackoverflow.com/questions/3334729/google-maps-v3-fitbounds-zoom-too-close-for-single-marker/5345708#5345708 。雖然這裏的鏈接答案只是將邊界擴大一個分數,但可以使用相同的方法將邊界擴大一個較大的數字;我發現在所有角落都加上7就能很好地工作。 – 2011-08-28 22:34:45
這是一個很酷的解決方案。然而,我注意到,它在Chrome中可以正常工作,也就是說,在沒有使用map.initialZoom的情況下,firefox也可以正常工作。 – Andrew 2011-11-20 18:53:17