Выполнение запросов AJAX при изменении карты пользователем с помощью API Javascript Google Maps.

Я создаю веб-сайт с ASP.NET MVC, где одна функция отображает некоторые точки на карте Google, используя API Javascript Google Maps. Поскольку у меня много очков, я не хочу получать их все; скорее, я хочу получить только те, которые находятся в текущей области просмотра, на которую смотрит пользователь на карте (ограничивающая рамка).

Для этого я сделаю AJAX-запрос к моему C#-коду, который возвращает все точки внутри определенной ограничивающей рамки. Однако мне нужно каким-то образом создать обработчик событий, который улавливает каждый раз, когда карта перемещается или масштабируется пользователем.

Как определить, когда карта, использующая Google Maps Javascript API, панорамируется или масштабируется, и запустить обработчик событий?

ОБНОВЛЕНИЕ: я знаю, что должен реализовать прослушиватель событий. Может ли кто-нибудь указать мне список событий, которые я могу использовать для объекта Map? click — одно из таких событий, но какие из них связаны с масштабированием и панорамированием?


person Maxim Zaslavsky    schedule 19.06.2010    source источник


Ответы (3)


Похоже, вы ищете событие idle:

Это событие запускается, когда карта становится бездействующей после панорамирования или масштабирования.

Пример:

<!DOCTYPE html>
<html> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
  <title>Google Maps Events</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: 400px;"></div>

  <script type="text/javascript">
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: new google.maps.LatLng(-33.92, 151.25),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    google.maps.event.addListener(map, 'idle', function() {
      var bounds = map.getBounds();

      console.log('North East: ' +
                  bounds.getNorthEast().lat() + ' ' + 
                  bounds.getNorthEast().lng());

      console.log('South West: ' +
                  bounds.getSouthWest().lat() + ' ' + 
                  bounds.getSouthWest().lng());

      // Your AJAX code in here ...
    });
  </script>
</body>
</html>

Кроме того, вы можете найти список всех событий, экспортируемых объектом google.maps.Map, в справочнике по API:

person Daniel Vassallo    schedule 20.06.2010
comment
Большое спасибо! Я искал такую ​​справочную страницу, но не нашел той части, на которую вы мне указали. - person Maxim Zaslavsky; 20.06.2010

я думаю, вам нужно использовать прослушиватель... в данном случае прослушиватель событий..

справочник по событиям gmaps

если вы используете поиск v3 по ссылке v3 для слушателей

person TiagoMartins    schedule 19.06.2010
comment
Не могли бы вы указать мне список событий, которые я могу использовать для объекта Map? щелчок — один из них, но какие относятся к масштабированию и панорамированию? - person Maxim Zaslavsky; 19.06.2010
comment
я публикую новый ответ, потому что я не могу редактировать свой первый, я понятия не имею, зачем проверять ссылку, я думаю, это то, что вы ищете, я надеюсь, что помогу вам - person TiagoMartins; 19.06.2010

это список Gevents-> здесь

наверное не все перечислено

person TiagoMartins    schedule 19.06.2010