在谷歌地图上收听键盘事件
Listen keyboard events on Google Map
我的应用程序上有谷歌地图,我使用地图在上面绘制多段线。我想在谷歌地图上听键盘事件,这样如果我在绘制多段线上按Esc键,它应该停止绘制(它应该重置DrawingMode)。我试了两种方法。1.我在它的容器中添加了关键事件:
bindKeyEventsForMapButtons : function(btn){
var me = this;
btn.el.dom.onkeydown = function (e) {
if(btn.getId() == 'drawPerimeterGoogleMap'){
if(btn.pressed==true)
btn.toggle(false);
}else if(btn.getId() == 'removeAllPerimeter'){
btn.setPressed(false);
}
}
}
在这种情况下,当我点击地图时,事件被触发。但当我在地图上画画的时候就不行了。
通过将事件添加到映射自身
google.maps.event.addListener(me.map, 'keydown', function () { alert('in keydown'); });
这永远不会被解雇。"
我不想听窗口或整个文档上的关键事件,因为我在文档中也有其他组件
有什么帮助吗?感谢
您需要注册一个DOM事件侦听器addDomListener
并在drawingManager
上调用setDrawingMode(null)
。
google.maps.event.addDomListener(document, 'keyup', function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) {
drawingManager.setDrawingMode(null);
}
});
下面是一个工作演示。希望这能有所帮助。
JSFiddle演示
编辑:
我意识到,虽然这适用于矩形,但它似乎不适用于多边形,因为将绘图模式设置为null实际上完成了覆盖。在这种情况下,除了上述内容外,还需要跟踪覆盖(在overlaycomplete
事件中),并在多边形本身上调用setMap(null)
。
var polygon;
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
polygon = e.overlay;
});
google.maps.event.addDomListener(document, 'keyup', function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) {
drawingManager.setDrawingMode(null);
polygon.setMap(null);
}
});
JSFiddle演示
相关文章:
- Vue键盘事件未启动
- Bootstrap 3键盘对默认键盘事件没有反应
- 是否可以使用JavaScript创建计算机宏(键盘事件等)
- JavaScript 键盘事件和比较
- 虚拟键盘事件
- 如何在 LimeJS javascript for html5 中处理键盘事件
- 调度键盘事件不'不能在JavaScript中工作
- 在谷歌地图上收听键盘事件
- 无法在鳄梨酱iframe中获取键盘事件
- 扩展浏览器以处理Apple键盘事件
- 用防油键或防篡改键触发键盘事件
- 如何使用自定义键盘事件和keyCode更改输入/textarea值
- 如何在svg上收听键盘事件
- 如何存储鼠标&键盘事件和值
- 键盘事件代码
- 国际键盘如何处理 JavaScript 键盘事件
- 来自键盘事件的 JS 读取变量
- 如何在 CodeMirror 中触发键盘事件
- 具有离子形式的键盘事件
- JavaScript 键盘事件未触发