Как я могу прослушать начало рисования пользователем многоугольника в Google Maps v3?

Есть событие polygoncomplete, которое запускается, но я ищу событие polygonstart. Даже событие overlaystart сработало бы для меня.

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

Моя идея псевдокода состоит в том, чтобы...

  1. Слушайте события кликов на карте.
  2. onclick проверьте, какой инструмент рисования выбран (если это возможно).
  3. Если выбран инструмент «Многоугольник», удалите все предыдущие многоугольники.

Это было бы намного проще с событием polygonstart.

Вот аналогичный вопрос, но скрытие и отображение элементов управления рисованием не подходит для этого пользовательского интерфейса. Ограничение Google Maps Drawing Manager до 1 полигона


person David    schedule 17.03.2014    source источник


Ответы (2)


Сегодня я боролся с проблемой прослушивания кликов на холсте Google Map и, возможно, обнаружил уродливый хак/обходной путь с использованием jQuery:

setTimeout( function() {
  var gmDomHackSelect = $('.gm-style').children().eq(0);
  gmDomHackSelect.click(handleMapCanvasClick);
}, 3000);

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

Преимущество этого слушателя в том, что он прослушивает щелчок непосредственно на холсте, т.е. щелчки по элементам управления картой (например, масштабирование) не вызывают его.

person Dmargster    schedule 29.06.2014

Это не сработает, поскольку согласно документам: Обратите внимание, что события google.maps.Map, такие как щелчок и перемещение мыши, отключаются при рисовании на карте.

Это также можно проверить, установив прослушиватели событий карты для событий click, dblclick.... После активации диспетчера рисования эти слушатели не отвечают, если вы нажмете на карту. Диспетчер чертежей их перехватывает. Исключением является событие карты rightclick, которое все еще включено.

person Anto Jurković    schedule 17.03.2014
comment
Да, ты прав. Прослушивание событий кликов на карте во время рисования невозможно. Любые мысли о том, как узнать, когда пользователь начал рисовать многоугольник? - person David; 17.03.2014
comment
Нет. Я пытался использовать прослушиватель событий для полилинии, но уведомления нет, потому что многоугольник рисуется (полигон типа режима). Кроме того, нет частичной информации для overlaycomplete. - person Anto Jurković; 17.03.2014
comment
Можно прослушивать события мыши для карты-контейнера. - person Dr.Molle; 17.03.2014
comment
Dr.Molle дал вам ответ: вы можете поймать событие клика, используя addDomListener() с контейнером. - person Anto Jurković; 17.03.2014