Вопрос

Я звоню GetBounds () прямо после звонка на Fitbounds (), и я подумал, что я получу действительную связанную, как карта, и масштабирует, чтобы соответствовать границам. К сожалению, GetBounds () возвращает ноль.

Код для воспроизведения это выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

        <style>
            #map {
                width: 800px;
                height: 400px;
            }
        </style>

    </head>
    <body>
        <div id='map'></div>

        <script>
            var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
            var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
            var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);

            var myOptions = {
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  center: new google.maps.LatLng(0, 0),
                  zoom: 0
            }

            var map = new google.maps.Map(document.getElementById("map"), myOptions);

            map.fitBounds(myLatLngBounds);

            console.log(map.getMapTypeId());
            console.log(map.getZoom());
            console.log(map.getBounds());
        </script>
    </body>
</html>

Есть ли что-то, что мне не хватает? Я не смог ничего найти в документах об этой ситуации. Ближайший я получаю, это записка на GetBounds, которые говорят:

Если карта еще не инициализирована (т.е. maptype все еще нулевой), или центр и зума не были установлены, а затем результат нулевой.

Обратите внимание, что GetZoom возвращается без undefined. Fitbounds () не устанавливает это значение?

РЕДАКТИРОВАТЬЯ обновил код с увеличением и центром по умолчанию, согласно предложениям Marcelo.

Это было полезно?

Решение

Вам придется получить границы после мероприятия BUNDS_CHANTED.

Другие советы

В виде @Crazyenigma предложил, вы можете получить границы после bounds_changed Событие срабатывает:

map.fitBounds(myLatLngBounds);

google.maps.event.addListener(map, 'bounds_changed', function() {
  console.log(map.getMapTypeId());
  console.log(map.getZoom());
  console.log(map.getBounds());
});

Вышесказанное будет распечатать следующее на вашу консоль:

roadmap
6
Object

Обратите внимание, что если вы хотите только getBounds и сделать что-то один раз, вы должны заменить addListener с addListenerOnce (Спасибо, @ Томас).

Используйте AddListEneronce, когда Tilesloaded

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
map.setCenter(myLatLngBounds)
});

Ответ в вашей собственной цитате. Вы должны установить центр и увеличить для инициализации карты.

Обратите внимание, что в документах для спецификации объекта MAPOPTIONS Значения центра и зума помечены как обязательный:

http://code.google.com/apis/maps/documentation/javascript/reference.html#mapoptions.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top