получить текущие границы? - PullRequest
7 голосов
/ 02 ноября 2011

Я хочу сохранить текущую позицию, на которую смотрит пользователь, и восстановить ее после нескольких нажатий.

Как получить текущие границы долготы, чтобы я мог отобразить на нем map.fitBounds?

Ответы [ 2 ]

7 голосов
/ 02 ноября 2011

Вот код для захвата текущих границ карты в событии "bounds_changed"

google.maps.event.addListener(map, 'bounds_changed', function() {
        try {
            if( initialBounds == null ) {
                initialBounds = map.getBounds(); 
            }
        } catch( err ) {
            alert( err );
        }
    });

Затем вы можете вернуть карту с помощью этого кода

google.maps.event.addDomListener(controlUI, 'click', function() {
        // map.setCenter(home)
        if( initialBounds != null ) {
            map.fitBounds( initialBounds );
        }
    });
4 голосов
/ 14 декабря 2017

getBounds() в API Карт Google v3

Таким образом, чтобы получить широту и долготу, нам нужно переместить getBounds() в bounds_changed прослушиватель событий.

     var map = new google.maps.Map(document.getElementById("map"), {
             zoom: 10,
             center: new google.maps.LatLng(lat, lng),
             mapTypeId: google.maps.MapTypeId.ROADMAP
     });
     google.maps.event.addListener(map, 'bounds_changed', function() {
              var bounds =  map.getBounds();
              var ne = bounds.getNorthEast();
              var sw = bounds.getSouthWest();
              console.log(ne.lat());
              console.log(ne.lng());
              console.log(sw.lat());
              console.log(sw.lng());
     });

Это событие вызывается при изменении границ области просмотра. Если у вас есть вызов ajax, то при каждом изменении положения карты вызов ajax срабатывает.

Итак, лучшее решение в этом случае - переместить getBounds() в idle прослушиватель событий. Это событие вызывается, когда карта становится бездействующей после увеличения.

     var map = new google.maps.Map(document.getElementById("map"), {
             zoom: 10,
             center: new google.maps.LatLng(lat, lng),
             mapTypeId: google.maps.MapTypeId.ROADMAP
      });
     google.maps.event.addListener(map, 'idle', function() {
              var bounds =  map.getBounds();
              var ne = bounds.getNorthEast();
              var sw = bounds.getSouthWest();
              console.log(ne.lat());
              console.log(ne.lng());
              console.log(sw.lat());
              console.log(sw.lng());
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...