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