Выполнение запросов AJAX при изменении карты пользователем с помощью API JavaScript Карт Google - PullRequest
3 голосов
/ 19 июня 2010

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 20 июня 2010

Похоже, вы ищете событие 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:

0 голосов
/ 19 июня 2010

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

вероятно, не перечислены все

0 голосов
/ 19 июня 2010

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

ссылка на события gmaps

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

...