Google Maps Api v3 - getBounds не определен

Я переключаюсь от v2 до API карт v3 google и получил проблему с gMap.getBounds() функция.

Я должен получить границы своей карты после ее инициализации.

Вот мой код JavaScript:


var gMap;
$(document).ready(

    function() {

        var latlng = new google.maps.LatLng(55.755327, 37.622166);
        var myOptions = {
            zoom: 12,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);

        alert(gMap.getBounds());
    }
);

Таким образом, теперь это предупреждает меня это gMap.getBounds() не определено.

Я попытался получить значения getBounds в событии щелчка, и оно хорошо работает для меня, но я не могу получить те же результаты в событии карты распределения памяти при загрузке.

Также getBounds хорошо работает, в то время как документ загружается в Google Maps API v2, но он перестал работать в V3.

Вы могли помочь мне решить эту проблему?

81
задан Philip Kirkbride 6 February 2017 в 13:34
поделиться

2 ответа

На заре API v3 метод getBounds () требовал, чтобы фрагменты карты завершили загрузку, чтобы он возвращал правильные результаты. Однако теперь кажется, что вы можете прослушивать событие bounds_changed , которое запускается еще до события tileloaded :

<!DOCTYPE html>
<html> 
<head> 
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
   <title>Google Maps v3 - getBounds is undefined</title> 
   <script src="http://maps.google.com/maps/api/js?sensor=false" 
           type="text/javascript"></script> 
</head> 
<body> 
   <div id="map" style="width: 500px; height: 350px;"></div> 

   <script type="text/javascript"> 
      var map = new google.maps.Map(document.getElementById("map"), {
         zoom: 12,
         center: new google.maps.LatLng(55.755327, 37.622166),
         mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      google.maps.event.addListener(map, 'bounds_changed', function() {
         alert(map.getBounds());
      });
   </script> 
</body> 
</html>
132
ответ дан 24 November 2019 в 09:34
поделиться

Он должен работать, по крайней мере, согласно документации для getBounds(). Тем не менее:

var gMap;
$(document).ready(function() {
    var latlng = new google.maps.LatLng(55.755327, 37.622166);
    var myOptions = {
        zoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);
    google.maps.event.addListenerOnce(gMap, 'idle', function(){
        alert(this.getBounds());
    });
});

Посмотрите, как это работает здесь.

20
ответ дан 24 November 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: