Обработка событий Javascript для Google Maps

Я использую карты Google + javascript + php в своем приложении. Я хочу знать две вещи:
в картах Google

  1. событие moveend ВСЕГДА запускается ПОСЛЕ события zoomend/dragend (в зависимости от того, какое из двух).

  2. Когда я нажимаю значок масштабирования на карте Google или прокручиваю колесико мыши для масштабирования, событие zoomend запускается более одного раза. Если я увеличиваю масштаб на один шаг, используя значок + на карте, событие zoomend запускается дважды, а иногда и больше. любую возможную лазейку.

    Итак, вы хотите знать, как остановить дальнейшее распространение событий в javascript. (помните, что мне не нужно использовать clearListeners, так как он всегда будет игнорировать обработчик событий, что нежелательно).

Спасибо.


person Prashant    schedule 11.02.2010    source источник


Ответы (2)


Я настроил прослушиватели для «moveend», «zoomend» и «dragend», чтобы попробовать это.

GEvent.addListener(map, "moveend", function() { console.log('moveend'); });
GEvent.addListener(map, "zoomend", function() { console.log('zoomend'); });
GEvent.addListener(map, "dragend", function() { console.log('dragend'); });

Похоже, что «moveend» всегда срабатывает после «zoomend» или «dragend».

Однако никакие события никогда не запускались более одного раза за раз. Возможно, вы случайно настроили два одновременных слушателя. Вам не нужно использовать stopPropagation или cancelBubble.

person Chris B    schedule 11.02.2010

вы можете попробовать просто вернуть false или null из события. Если это не сработает, попробуйте использовать «event.cancelBubble = true» или «event.stopPropagation».

person MrJoeBlow    schedule 11.02.2010
comment
Используйте как cancelBubble, так и stopPropagation(), потому что некоторым браузерам потребуется первый, а некоторым — второй. - person Marcel Korpel; 11.02.2010