Google地图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公里我得到这个结果:

在这里输入图像说明

虽然我想呈现更高级别的缩放。

喜欢这个

在这里输入图像说明

我使用fitBounds()方法

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

感谢您的支持

发生这种情况的原因是LatLngBounds()不包含两个任意点作为参数,而是SW和NE点

在空边界对象上使用.extend()方法

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

演示在http://jsfiddle.net/gaby/22qte/

LatLngBounds必须用(西南,东北)顺序的点来定义。 你的观点不是这个顺序。

一般的解决方法,特别是如果你不知道要点,一定会按照这个顺序,是扩大一个空白的范围:

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

API将整理界限。

我有同样的问题,你描述,虽然我正在build立我的LatLngBounds如上所述。 问题是事情是asynchronous的,调用map.fitBounds()在错误的时间可能会给你一个类似Q的结果。我发现的最好的方法是将呼叫置于一个空闲处理程序,如下所示:

 google.maps.event.addListenerOnce(map, 'idle', function() { map.fitBounds(markerBounds); }); 
  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);