2012-04-26 75 views
11

我試圖搜索谷歌地圖API文檔,也在這裏,但我無法找到如何做到這一點。在谷歌地圖上的箭頭鍵導航,無需點擊地圖

我想在我的地圖上默認設置箭頭鍵導航,無需單擊地圖區域以啓用該功能。

我嘗試沒有成功以下解決方案:

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

任何人都有一個線索如何可以做?

謝謝大家。

+0

你的意思是用鍵盤上的箭頭鍵控制地圖的平移嗎? – 2012-06-07 15:04:21

+3

這個問題的答案可能有所幫助:http://stackoverflow.com/questions/9195814/google-maps-v3-keyboard-accessibility/9218055#9218055 – Marcelo 2012-06-23 09:19:49

回答

4

幾件事情要注意這裏,只需使用.focus()或觸發#map div元素上的點擊操作將不會執行任務,因爲這些操作發生在地圖實際呈現在DOM上之前。因此,首先要承認的是使用google地圖庫提供的tilesloaded事件。

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

我纔來的第二件事是,你不能只是增加$('#map').click()事件監聽器裏。這是因爲雖然#map是容器div,但Google Maps腳本實際上呈現了一大堆其他div(它們具有較高的z-index,也是實際上包含地圖切片的地方)。隨着黑客周圍一點點,和jQuery可以縮小到包含瓷磚div和上該div ...生成的代碼觸發點擊事件是:

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

我使用Chrome的開發工具,以縮小下降到包含瓷磚的div,並使用jquery的children()方法遍歷從#map開始的那個div。如果您將該代碼粘貼到您的init函數中,則應該很好。這裏有一個JSfiddle,並提供解決方案的實例。

+0

另外,我希望谷歌提出一種本地方法,專注於地圖容器 - 甚至在初始化時將它作爲地圖選項 - 放入新的3.10版本中。會討厭做那麼多的DOM查找,只關注地圖。 – 2012-10-25 01:56:56

+0

不錯的解決方案,我希望有一個很好的方式來獲得瓷磚容器,而不必依賴於一個脆弱的DOM遍歷路徑,但仍然:這個解決方案的作品,並獲得賞金! – JasonWyatt 2012-10-25 13:48:15