Событие, проходящее через холст - PullRequest
1 голос
/ 22 февраля 2012

У меня есть холст, который я накладываю поверх виджета карты Google (используя обертку gwt gmaps). Все события мыши, такие как двойной щелчок и перетаскивание, конечно же, сначала попадают на холст, и их нужно будет добавить к API-картам внизу.

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

1 Ответ

1 голос
/ 22 февраля 2012

Используя jQuery, что-то вроде этого должно помочь вам:

// Your custom event handler function for the canvas.
function event_handler(e) {
  // Do stuff.

  // Pass the event to your gmaps parent container.
  $("#gwt_gmaps_parent_container").trigger(e);
}

// Bind your custom event handler to the canvas.
$("#canvas").bind("click", event_handler);

В зависимости от настроек распространения вашего события и от того, как Google Maps справляется с наложением слоев (я никогда раньше не работал с ним), вам может потребоваться вызвать событие на самом виджете.

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

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

...