动态Google地图缩放getBounds()未定义

时间:2010-12-17 07:25:29

标签: javascript google-maps

我有这段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。请帮忙

1 个答案:

答案 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 

其中包括方法等。