2012-04-22 221 views
52

我有這個呈現地圖的代碼。Google maps API V3方法fitBounds()

function initialize() { 
    var myOptions = { 
     center: new google.maps.LatLng(45.4555729, 9.169236), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 

panControl: true, 
mapTypeControl: false, 
panControlOptions: { 
      position: google.maps.ControlPosition.RIGHT_CENTER 
     }, 
zoomControl: true, 
zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.LARGE, 
    position: google.maps.ControlPosition.RIGHT_CENTER 
}, 
scaleControl: false, 
streetViewControl: false, 
streetViewControlOptions: { 
    position: google.maps.ControlPosition.RIGHT_CENTER 
      } 
     }; 
    var map = new google.maps.Map(document.getElementById("mapCanvas"), 
     myOptions); 



var Item_1 = new google.maps.LatLng(45.5983128 ,8.9172776); 

var myPlace = new google.maps.LatLng(45.4555729, 9.169236); 

var marker = new google.maps.Marker({ 
    position: Item_1, 
    map: map}); 

var marker = new google.maps.Marker({ 
    position: myPlace, 
    map: map}); 

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
map.fitBounds(bounds); 

    } 

即使兩個點是從25公里分開後,我得到這樣的結果:

enter image description here

雖然我想呈現一個較高的水平放大。

喜歡這個

enter image description here

我使用的方法fitBounds()

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
    map.fitBounds(bounds); 

感謝您的支持

回答

29

LatLngBounds

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

演示必須與(西南,東北)順序點來定義。你的積分不是這個順序。

一般的修復,特別是如果你不知道該點肯定會按照這個順序,是延長一個空的界限:

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

的API將整理出界。

+7

哈!只是被打敗了。 iPad鍵盤不會讓快速輸入變得容易。 – 2012-04-22 13:06:32

18

我有同樣的問題,你描述,雖然我正在建立我的LatLngBounds上面提出的建議。問題是,事情是異步和在錯誤的時間調用map.fitBounds()可能會離開你的結果就像在問: 我發現最好的辦法是撥打電話空閒處理程序是這樣的:

google.maps.event.addListenerOnce(map, 'idle', function() { 
    map.fitBounds(markerBounds); 
}); 
+1

謝謝,這對我來說是一個巨大的幫助,因爲我將地址編碼爲座標,然後映射到這些座標,但它不起作用 – andrewtweber 2014-03-03 07:31:49

+0

由於包含的HTML在調用時尚未顯示,我遇到了類似的問題'fitBounds()',顯然縮放無法想象自己。確保地圖在嘗試縮放之前先顯示,這對我有所幫助。 – stevo 2015-07-29 23:24:29

+1

HUUUGE幫助,謝謝你的回答 – 2017-01-20 13:55:04

6
var map = new google.maps.Map(document.getElementById("map"),{ 
       mapTypeId: google.maps.MapTypeId.ROADMAP 

      }); 
var bounds = new google.maps.LatLngBounds(); 

for (i = 0; i < locations.length; i++){ 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 
bounds.extend(marker.position); 
} 
map.fitBounds(bounds); 
+2

酷它適合我。感謝@MAMASSi – 2016-09-30 09:52:39