2012-04-26 3 views
11

Google지도 API 문서 및 여기에서도 검색을 시도했지만이 방법을 찾을 수 없었습니다.지도를 클릭하지 않고 Google지도의 화살표 키 탐색

기본적으로 내지도에 화살표 키 탐색을 설정하려고하는데,이를 사용하려면지도 영역을 클릭 할 필요가 없습니다.

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

누구나가 완료 될 수 있는지 실마리가 :

내가 성공하지 않고 다음과 같은 솔루션을 시도?

감사합니다.

+0

키보드의 화살표 키로지도 이동을 제어한다는 의미입니까? –

+3

이 질문에 대한 답변은 도움이 될 수 있습니다. http://stackoverflow.com/questions/9195814/google-maps-v3-keyboard-accessibility/9218055#9218055 – Marcelo

답변

4

.focus()을 단순히 사용하거나 #map div 요소에서 클릭 동작을 트리거하면지도가 실제로 DOM에서 렌더링되기 전에 이러한 동작이 수행되기 때문에 트릭을 만들지 않습니다. 따라서 가장 먼저 알아야 할 점은 Google지도 라이브러리에서 제공하는 tilesloaded 이벤트를 사용하는 것입니다.

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

내가 알아 온 두 번째 것은 당신이 단지 이벤트 리스너 내부 $('#map').click()를 추가 할 수 있습니다. 이것은 #map이 컨테이너 div이지만 Google지도 스크립트는 실제로 다른 div의 전체를 렌더링하여 더 높은 z- 인덱스를 가지며 실제로지도 타일을 보유하고 있기 때문입니다. 조금 주위 해킹의 비트, 그리고 JQuery와 사용하면 타일을 포함 사업부를 좁힐 수 있으며, 그 사업부 ... 결과 코드에 클릭 이벤트를 트리거하는 것은이었다

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

나는 좁히기 위해 크롬의 개발 도구를 사용 아래로 타일을 포함하는 div로 이동하고 #map에서 해당 div로 넘어가려면 jquery의 children() 메서드를 사용했습니다. 이 코드를 init 함수에 사용하면 잘 수행 할 수 있습니다. 이 솔루션의 실제 예가있는 JSfiddle입니다.

+0

또한 Google에서 지도 컨테이너 - 새로운 3.10 릴리스에서 초기화 할 때지도 옵션으로 사용합니다. 지도에 초점을 맞추기 위해 많은 DOM 조회를하는 것을 싫어할 것입니다. –

+0

멋진 솔루션입니다. 부서지기 쉬운 DOM Traversal 경로에 의존하지 않고도 타일 컨테이너를 얻을 수있는 좋은 방법이 있었으면 좋겠지 만 여전히이 솔루션이 작동하고 현상금을 얻습니다! – JasonWyatt

관련 문제