2011-03-02 15 views
21

Bir kullanıcının bir posta kodu ve bir yarıçapı (mil) girdiği bir harita oluşturdum ve haritanın posta kodundan oluşturulan noktada ortalanmasını ve yalnızca bu yarıçap içinde olacak alanı (kabaca) göstermesini istiyorum. Yarıçaplı bir Çember oluşturuyorum ve haritayı o çembere uyacak şekilde bulmaya çalışıyorum. Şu anda doğru şekilde ortalar ancak gösterilen alan, verilen yarıçaptan çok daha fazladır.Google Maps API v3, belirli bir yarıçapı göstermek için yakınlaştırma seviyesini ayarlar mı?

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'); 
}; 

DÜZENLEME: Drew kullanıyorum çember. İdeal olarak harita, yarıçap içindeki alana yakınlaştırılacaktır.

enter image description here

cevap

21

fitBounds() çağrısı tam sınırları içeren en küçük yakınlaştırma düzeyine zum yapar. 1 daha yakın zum seviyesinde zum yaparsanız, yarıçap harita içinde tam olarak yer almayacaktır. Tabii

+0

+1 Yeap.The sorun kesintili yakınlaştırma olduğunu –

+3

Evet bir şeye ihtiyacın olacağını kısmi yakınlaştırma seviyesi oluşturabilir z = 11 yerine z = 11.5 olmanız gerekir. – Alex

+0

Alex: zoom değeri tamsayıdır, kayan nokta değil ... –

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

Bu

kimse üzerinde köşeleri var olan bir dikdörtgen oluşturmak gerekir daire içinde bölgeyi görüntülemek için (her zaman aynı değil durumunda) ne kadar belirli yarıçap uyum iyi bağlıdır Çemberin çevresini ve haritanın görüş alanını sınırlarına sığdırın.

E.g. Görünür bir dairenin çizilmesi ve aynı merkez noktaya sahip saydam bir dikdörtgenin op tarafından açıklandığı şekilde çalışması gerekir.

0

Haziran 2017'den beri, fitBounds yönteminin, dolgu malzemesinin boyutunu temsil eden ikinci bir parametresi vardır. kaldırmak isteyenler için, sadece geçmeleri gerekiyor 0.

Map.map.fitBounds(bounds, 0); 

Yeni yöntem imzası:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number) 
İlgili konular