2014-12-16 3 views
0

По этому вопросу: 'Make custom overlay clickable (Google Maps API 3)' и связанный также с моим comment в том же вопросе (размещен здесь, чтобы сделать его более заметным и потому, что я думаю, это другая проблема).Избегайте пользовательских событий наложения, когда карта панорамируется (API-интерфейс google)

Я добавил прослушиватель click к моему многоугольнику наложения, но теперь у меня возникла проблема, когда пользователь хочет панорамировать карту и нажимает на накладку, чтобы сделать это, когда кнопка мыши отпущена, происходит событие клика. Очевидно, я не хочу выполнять действие onclick, когда я просто хочу скопировать карту. Любое элегантное решение для этой проблемы?

Вот пример проблемы: panning/click issue.

ответ

3

Заканчивать эту обновленную скрипку здесь: http://jsfiddle.net/9gvsq3od/5/

В основном я добавил этот код:

var dragging = false; 

google.maps.event.addDomListener(this.path_, 'mousedown', function (evt) { 
    dragging = false; 
}); 

google.maps.event.addDomListener(this.path_, 'mousemove', function (evt) { 
    dragging = true; 
}); 

// onclick listener 
google.maps.event.addDomListener(this.path_, 'click', function (evt) { 
    if (dragging) { return false;} 
    alert('clicked on path'); 
}); 

Событие щелчка срабатывает только при отпускании кнопки мыши так код устанавливает переменную dragging истину, когда мышь перемещается. Первый дескриптор mousedown сбрасывает переменную перетаскивания, так как нет события «mousestop», нам нужно сбросить состояние при начале нового взаимодействия.

+0

OK Блейк, он отлично работает. Единственное решение, которое у меня было в голове, заключалось в том, чтобы добавить слушателей к карте, когда пользователь начал и остановил панорамирование, но я думаю, что это не эффективно, поскольку в моем приложении у меня несколько наложенных многоугольников. Ваш подход кажется намного лучше. Так же, как и любопытство, этот способ или любое другое подобное, как google maps api управляет событием 'onclick' на объектах google.maps.Polygon, пока пользователь панорамирует карту? Спасибо! – christiansr85

 Смежные вопросы

  • Нет связанных вопросов^_^