2011-03-02 68 views
21

我創建了一個用戶輸入郵編和半徑(英里)的地圖,我希望地圖以郵政編碼創建的點爲中心,並只顯示(大致)該半徑範圍內的區域。我正在創建一個帶有半徑的圓,並試圖讓地圖適合該圓。現在它正確居中,但顯示的區域遠比給出的半徑大。Google Maps API v3設置縮放級別以顯示給定半徑?

me.center_map = function(latlng, r) 
{ 
    // latlng is the point of the zipcode 
    var circ = new google.maps.Circle(); 
    circ.setRadius(r * 1609.0); 
    circ.setCenter(latlng); 
    map.setCenter(latlng); 
    map.fitBounds(circ.getBounds()); 

    // updates markers 
    google.maps.event.trigger(map,'dragend'); 
}; 

編輯:德魯,我現在用的圓。理想情況下,地圖將放大到半徑範圍內的區域。

enter image description here

回答

21

到fitBounds()的調用將放大到完全包含邊界的最小縮放級別。如果您要放大1個縮放級別,則半徑將不會完全包含在地圖中。

+0

+1 Yeap.The問題是不連續的縮放 – 2011-03-02 08:18:41

+3

是的,你需要的東西,可以呈現部分縮放級別,例如而不是z = 11你需要z = 11.5 – Alex 2011-03-03 12:28:07

+0

亞歷克斯:縮放值是整數,而不是浮點數... – 2012-05-30 18:58:12

3
map.setZoom(map.getZoom() + 1); 

當然,這取決於如何好特定半徑配合(它的情況下,並不總是相同)

到圓中顯示該地區一個需要構建有它的對角的矩形圈的邊界,並將地圖的視口調整到邊界。

E.g.繪製一個可見的圓形和一個具有相同中心點的透明矩形應該像操作所描述的那樣工作。

0

自2017年6月以來,fitBounds方法的第二個參數表示填充的大小。對於那些誰想要刪除它,你只需要傳遞0

Map.map.fitBounds(bounds, 0); 

新方法簽名:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number) 
相關問題