Google Maps Polyline CLICK Event - PullRequest
       29

Google Maps Polyline CLICK Event

0 голосов
/ 23 февраля 2011

Я реализую приложение карты. Он использует Google Maps API для Flash. Существует одна функция обратного вызова, которая запускается при нажатии на карту. Кроме того, есть много полилиний, которые генерируются динамически. Полилинии также имеют назначенный им прослушиватель событий щелчка. Проблема в том, что когда я щелкаю полилинию, сначала запускается событие щелчка карты, а затем запускается событие щелчка полилинии.

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

map = new Map();
map.key = GOOGLE_MAP_KEY;
map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

и вот код, который назначает функцию обратного вызова событию click полилинии:

var polyline:Polyline = new Polyline(path);
polyline.addEventListener(MapMouseEvent.CLICK, cutToEnd);

Мне нужно подавить вызов функции «onMapClicked», когда я нажимаю на полилинию. Только метод "cutToEnd" должен быть вызван.

Спасибо

1 Ответ

0 голосов
/ 23 февраля 2011
map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

Здесь вы используете bubblingPhase (третий «истинный» параметр). Это означает, что когда вы нажимаете полилинию, событие «достигает» первой вашей карты, потому что оно захватывает от этапа к вашей кнопке. Установите параметр «false» или оставьте только 2 параметра (по умолчанию useCapture имеет значение «false»). Затем в конце вашей обработчика кликов полилинии добавьте вызов метода event.stopPropagation(). Это заставит событие перестать пузыриться на сцене и не достигнет вашей карты.

UDATE: если MapMouseEvent не всплывает, вы можете сравнить свойства event.target и event.currentTarget. В вашей полилинии клик слушателя они будут равны. Таким образом, вы можете добавить

 if(event.target != event.currentTarget)
    return;

в начале вашей карты нажмите слушатель.

...