Динамическое увеличение карты Google getBounds () undefined - PullRequest
1 голос
/ 17 декабря 2010

У меня есть этот фрагмент кода 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 ().Пожалуйста, помогите

1 Ответ

2 голосов
/ 17 декабря 2010

Попробуйте использовать новый 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 и так далее. Это само по себе, возможно, также вызвало ошибку. Всегда читайте для / в циклах как:

for property in object 

Включает методы и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...