Google maps api 3 谷歌地图V3键盘可访问性
我正在建立一个地图,我想键盘访问。默认情况下,V3可以通过键盘访问,但在单击地图之前,您似乎无法访问键盘功能。我添加了一个用于选择的链接,它会将您带到包含映射的div标记,但这并没有起作用。是否有一些方法可以在不使用鼠标的情况下激活“常规地图单击”事件 谢谢,Google maps api 3 谷歌地图V3键盘可访问性,google-maps-api-3,Google Maps Api 3,我正在建立一个地图,我想键盘访问。默认情况下,V3可以通过键盘访问,但在单击地图之前,您似乎无法访问键盘功能。我添加了一个用于选择的链接,它会将您带到包含映射的div标记,但这并没有起作用。是否有一些方法可以在不使用鼠标的情况下激活“常规地图单击”事件 谢谢, g您是否尝试过使用该函数?我通常的做法是,首先通过添加tabindex=“0”使map div可聚焦。这会将其添加到浏览器的自然选项卡顺序中。然后,我为keyup添加了一个事件侦听器,该侦听器带有一个开关,该开关根据按下的键调用map.p
g您是否尝试过使用该函数?我通常的做法是,首先通过添加
tabindex=“0”
使map div可聚焦。这会将其添加到浏览器的自然选项卡顺序中。然后,我为keyup
添加了一个事件侦听器,该侦听器带有一个开关,该开关根据按下的键调用map.panBy或map.setZoom。这里是一个jQuery示例,但是同样可以通过google.maps.event.addListener(map'keyup',function(){…etc.})实现代码>。jQuery使event.which跨浏览器运行,因此代码更简单
$('#map').keyup(function(event) {
var o = 128; // half a tile's width
switch(event.which) {
case 37: // leftArrow
map.panBy(-o,0);
break;
case 38: // upArrow
map.panBy(0,-o);
break;
case 39: // rightArrow
map.panBy(o,0);
break;
case 40: // downArrow
map.panBy(0,o);
break;
case 109: // numpad -
case 189: // -
map.setZoom(map.getZoom()-1);
break;
case 107: // numpad +
case 187: // =
map.setZoom(map.getZoom()+1);
break;
}
});
我试着使用焦点功能。我创建了一个带有onclick事件的按钮,该事件引用了我创建的名为getfocus()的函数。函数看起来是这样的:函数getfocus(){document.getElementById(“map”).focus();}我本来希望这能起到作用,但事实并非如此。没有办法向下搜索地图并选择它。我不确定我是否完全理解这段代码的作用。我基本上是想让我的网站有一个链接来选择激活地图上点击事件的链接,或者让用户可以向下点击地图,按enter键,然后选择地图。有了这个代码,你就不需要额外的链接了。这样,用户可以将选项卡向下移动到地图,然后按上/下/左/右/+/-以平移/缩放。键盘用户不必找到链接来访问地图键盘。另外,他们不应该在已经有焦点的情况下按enter键来提供焦点。我尝试了你的代码,它成功了!现在唯一的问题似乎是用键盘访问地图标记/簇。如果我点击一个标记,会显示一个信息窗口,但现在无法用键盘选择一个标记。我只是好奇这是否可能。我不认为这是可能的,因为谷歌地图v3呈现标记的方式。它们不再是具有png背景的简单div。他们被画在他们下面的瓷砖上,或者是通过画布,或者是一些旧的替代品。而且,由于谷歌地图坚持不为标记分配ID或特殊类,因此您无法访问它们。至少在v2中,您可以向下钻取DOM树以获得标记。在v3中,您会看到一个canvas元素,然后就被卡住了。如果您使用的是标准的marker cluster,那么您可以向下钻取DOM以获得div(查找样式属性包含m1.png、m2.png、m3.png、m4.png或m5.png的div)。请参见此处的方法: