事件Passthrough画布

时间:2012-02-21 22:38:43

标签: javascript events gwt canvas overlay

我有一个画布,我覆盖在Google地图小部件的顶部(使用gwt gmaps包装器)。所有鼠标事件,如双击和拖动,当然首先击中画布,然后需要将它们下沉到下面的地图api。

问题是,是否有一种方法可以直接将特定鼠标事件接收到地图窗口小部件,而无需编写调用api特定操作的事件处理程序。基本上会使画布表现得像它不存在的东西。我知道,我可能最终会实施所有活动,但认为这个问题值得探讨。

1 个答案:

答案 0 :(得分:1)

使用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地图处理分层的方式(我以前从未使用过它),您可能需要在窗口小部件上触发事件。

编辑:此方法不会处理更复杂的交互,例如拖放或滚轮缩放。不幸的是,您可能必须为这些事件编写自定义处理程序以直接进行API调用。

如果您只需要鼠标事件的子集来影响覆盖的画布,您可能希望将窗口小部件捕获的事件传递给画布。

相关问题