无需单击地图即可在Google地图上按箭头键导航

时间:2012-04-26 13:24:18

标签: google-maps google-maps-api-3

我尝试在Google Maps API文档上搜索,但我也找不到如何执行此操作。

我正在尝试在我的地图上默认设置箭头键导航,而无需点击地图区域以启用它。

我尝试了以下解决方案但没有成功:

map.getDiv().focus();
document.getElementById("map_canvas").focus();
google.maps.event.trigger(map, 'rightclick');

任何人都知道如何做到这一点?

谢谢大家。

1 个答案:

答案 0 :(得分:5)

这里需要注意的事情,只需使用.focus()或触发#map div元素上的点击操作就行不通,因为这些操作发生在地图实际渲染之前DOM。因此,首先要承认的是使用谷歌地图库提供的tilesloaded事件。

google.maps.event.addListener(map, 'tilesloaded', function() {
    //do actions
});

我发现的第二件事是你不能只在事件监听器中添加$('#map').click()。这是因为尽管#map是容器div - 谷歌地图脚本实际上在它上面呈现了一大堆其他div(它们具有更高的z-indices并且实际上也是你的地图图块)。通过一些黑客攻击和jquery,您可以缩小到包含磁贴的div并触发该div上的click事件...结果代码是:

google.maps.event.addListener(map, 'tilesloaded', function() {    
    $("#map").children().children().first().children().trigger('click');
});

我使用Chrome的开发工具缩小到包含切片的div,并使用jquery的children()方法从#map遍历到该div。如果您将该代码粘贴到init函数中,那么您应该很高兴。这是一个JSfiddle,其中包含解决方案的工作示例。