是否可以在页面加载后立即激活谷歌地图(街景)的键盘绑定?我在这里找到了一个工作示例,不幸的是它使用了不再支持的 Google Maps API v2。如果您嵌入了普通的 Google Maps StreetView,则在您最初单击地图之前,键盘绑定不起作用(请参阅此处)。
有没有可能在 v3 中做到这一点?我已经尝试过这个和这个但没有成功,因为那不适用于街景。
更新:使用键盘绑定,我特别想到了箭头键可以在地图上移动
谢谢
问候
好的,找到了一个解决方案并为此创建了一个Gist。
@ChristianB 提出的解决方案对我不起作用。可能是因为它适用于旧版本的 Google Maps API(我的是 v3),或者它使用了不同的渲染模式(我的是 webgl,它使用画布)。
我所做的是等待position_changed事件触发,然后在canvas元素上设置一个tabIndex属性,然后在canvas元素上触发focus()。之后,键盘绑定工作。
编码:
var panorama = new google.maps.StreetViewPanorama({
...
//forcing webgl
mode: 'webgl'
});
//Set an event listener for position_changed,
//this will be triggered the first time the panorama is loaded,
//and every time the position changes
google.maps.event.addListener(panorama, 'position_changed', function() {
//This is how to get the canvas in my current version of the Google Maps API,
//note that this might change in the future.
var canvas = document.querySelector('canvas.widget-scene-canvas');
//first set a tabindex on the canvas,
//without it focus will not make the canvas the active element
canvas.setAttribute("tabindex", "-1");
canvas.focus();
//To test that it worked you can check that document.activeElement is the canvas
console.log(document.activeElement);
});
您可能希望将代码放在一个单独的函数中,并在画布失去焦点时调用它。
在 Google Chrome v55 中测试的代码。