Пользовательские и системные события в Google Maps API v3 - PullRequest
1 голос
/ 21 января 2012

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

Например, событие zoom_changed запускается, когда вы используете такие методы, как setZoom, fitBounds и т. Д., Что в моей реализации нежелательно, так как я просто хочу знать, когда пользователь фактически изменяет уровень масштабирования.

К сожалению, событие click вызывается только на самой карте, а не на элементах управления, поэтому вы не можете полагаться на этот метод, чтобы помочь обнаружить ввод пользователя.

Идеи

1 Ответ

0 голосов
/ 23 января 2012

Несмотря на то, что я не смог решить эту проблему с помощью API Карт Google, я создал обходной путь, который включает в себя вызов этого метода перед изменением масштаба или положения карты без взаимодействия с пользователем:

MapGraph.prototype.systemMove = function() {
  var _this = this;
  this.isMoving = true;
  return setTimeout(function() {
    return _this.isMoving = false;
  }, 500);
};

А мои привязки событий выглядят так:

google.maps.event.addListener(this.map, 'dragend', function(event) {
  if (!_this.isMoving) return _this.mapChanged();
});

Не идеально, но работает.

Хотелось бы увидеть любые другие реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...