1

ページ読み込み直後に Google マップ (StreetView) のキーボード バインドを有効にすることはできますか? ここで実際の例を見つけましたが、残念ながら、サポートされなくなった Google Maps API v2 を使用しています。通常の Google マップ ストリートビューを埋め込んだ場合、最初にマップをクリックする前にキーボード バインドが機能しません (こちらを参照)。

v3でこれを行う可能性はありますか? ストリートビューでは機能しないため、すでにこれこれを試しましたが成功しませんでした。

更新:キーボード バインディングでは、マップ内を移動するために特に矢印キーを念頭に置いています。

ありがとう

ご挨拶

4

2 に答える 2

0

OK、解決策を見つけて、そのためのGistを作成しました。

于 2013-04-16T10:09:26.627 に答える
0

@ChristianB が提案した解決策はうまくいきませんでした。古いバージョンの Google Maps API (私の場合は v3) で動作するか、別のレンダリング モード (私の場合はキャンバスを使用する webgl) を使用している可能性があります。

私がしたことは、position_changed イベントがトリガーされるのを待ってから、キャンバス要素に tabIndex 属性を設定してから、キャンバス要素に 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 でテストされたコード。

于 2016-12-21T06:10:20.537 に答える