我有这段javascript代码
var myOptions = {
zoom:9,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var latlongcollection = new Array();
// some more code to push latlng objects into latlongcollection
map.setCenter(latlongcollection[0]);
for(latlong in latlongcollection){
map.getBounds().extend(latlong);
}
map.fitBounds(map.getBounds());
但每次它给我的错误map.getBounds()都是未定义的。中心设置和均匀。在调用map.getBounds()之前设置了zoom。请帮忙
答案 0 :(得分:2)
尝试使用新的google.maps.LatLngBounds对象而不是map.getBounds():
var bounds = new google.maps.LatLngBounds()
// note: this for/in loop is erronous
//for(latlong in latlongcollection){
// bounds.extend(latlong);
//}
for ( var i = 0,len=latlongcollection.length;i<len;i++) {
bounds.extend( latlongcollection[ i ] );
}
map.fitBounds( bounds );
此外,您使用的for循环与数组一起使用时很糟糕。数组中的for / in不仅会循环索引值,还会循环属性和方法。因此,您将使用.length和.push扩展您的界限等等。仅这一点也可能导致了这个错误。始终读取/ in循环:
for property in object
其中包括方法等。