Obsługa klawiatury
API Google Maps umożliwia przechwytywanie i obsługę zdarzeń, następujących po wciśnięciu dowolnego klawisza na klawiaturze. W tej części kursu dowiesz się, jak można to osiągnąć.
Włączenie obsługi strzałek
Google Maps API ma wbudowaną obsługę przesuwania mapy za pomocą strzałek na klawiaturze. Aby podpiąć obsługę tych klawiszy do twojej mapy, wystarczy, że stworzysz nowy obiekt klasy GKeyboardHandler, którego konstruktor przyjmuje jeden argument - odwołanie do obiektu mapy, która ma być obsługiwana:
mapa = new GMap2(document.getElementById('mapka'),{mapTypes: [G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP]});
mapa.setCenter(new GLatLng(53.41935400090768,14.58160400390625),10);
new GKeyboardHandler(mapa);
Niestety, to nie wszystko. Jeśli pozostawisz kod w takiej postaci, to mapa będzie obsługiwać strzałki, ale tylko wtedy, jeśli wcześniej ustawisz jej focus, np. klikając na nią. Trzeba więc napisać odpowiedni skrypt, który ustawi focus na mapie od razu na starcie, by można było bez żadnych dodatkowych akcji przesuwać mapę strzałkami.
Nie istnieje żadna prosta funkcja, która automatycznie ustawiłaby focus. Aby to zrobić, należy posłużyć się małym obejściem, nakazując odpalenie zdarzenia click na mapie (jako elemencie dokumentu):
GEvent.trigger(document, "click", {srcElement: document.getElementById("mapka"), target: document.getElementById("mapka"), nodeType: 1});
Ten kod jest może się wydawać niezrozumiały, ale na szczęście pełni swoją rolę bardzo dobrze. Najprościej ujmując, metoda trigger() obiektu GEvent wywołuje kliknięcie ("click") na dokumencie (document), pozostałe parametry zawarte są w tablicy, w której kluczowe jest przypisanie obiektu mapy (document.getElementById("mapka")) do kluczów, definiujących co właściwie kliknęliśmy (srcElement i target).
Po zastosowaniu takiego zabiegu, będziemy w stanie przesuwać elegancko mapę za pomocą klawiatury: przykład 1pokaż kod przykładu
Obsługa innych klawiszy
Aby móc przechwycić zdarzenia wciśnięcia innych klawiszy niż strzałki, musimy napisać własną funkcję, i podpiąć ją do nasłuchu na wciśnięcie klawisza:
GEvent.addDomListener(document, "keypress", obslugaKlawisza);
Powyższy kod powoduje, że po wciśnięciu klawisza ("keypress") zostanie wywołana funkcja obslugaKlawisza() z jednym parametrem - kodem, określającym który klawisz został wciśnięty. Funkcja wygląda następująco:
function obslugaKlawisza(e)
{
switch(e.keyCode)
{
case 13: stworzMarker(); return false; break;
default: return true;
}
}
Oczywiście, można zastosować kilka różnych przypadków za pomocą słów kluczowych case. Numerowi 13 przypisany jest klawisz ENTER. Zobacz, jak wygląda działanie tego kodu w przykładzie przykład 2pokaż kod przykładu
Kody klawiszów
Przykład 2 obługuje tylko klawisz ENTER, który ma kod 13. Tablica poniżej zawiera listę klawiszów i przypisanych im kodów:
| kod | klawisz | kod | klawisz | kod | klawisz |
|---|---|---|---|---|---|
| 8 | Backspace | 13 | Enter | 33 | ! |
| 34 | " | 35 | # | 36 | $ |
| 37 | % | 38 | & | 39 | ' |
| 40 | ( | 41 | ) | 42 | * |
| 43 | + | 44 | , | 45 | - |
| 46 | . | 47 | / | 48 | 0 |
| 49 | 1 | 50 | 2 | 51 | 3 |
| 52 | 4 | 53 | 5 | 54 | 6 |
| 55 | 7 | 56 | 8 | 57 | 9 |
| 58 | : | 59 | ; | 60 | < |
| 61 | = | 62 | > | 63 | ? |
| 64 | @ | 65 | A | 66 | B |
| 67 | C | 68 | D | 69 | E |
| 70 | F | 71 | G | 72 | H |
| 73 | I | 74 | J | 75 | K |
| 76 | L | 77 | M | 78 | N |
| 79 | O | 80 | P | 81 | Q |
| 82 | R | 83 | S | 84 | T |
| 85 | U | 86 | V | 87 | W |
| 88 | X | 89 | Y | 90 | Z |
| 91 | [ | 92 | \ | 93 | ] |
| 94 | ^ | 95 | _ | 96 | ` |
| 97 | a | 98 | b | 99 | c |
| 100 | d | 101 | e | 102 | f |
| 103 | g | 104 | h | 105 | i |
| 106 | j | 107 | k | 108 | l |
| 109 | m | 110 | n | 111 | o |
| 112 | p | 113 | q | 114 | r |
| 115 | s | 116 | t | 117 | u |
| 118 | v | 119 | w | 120 | x |
| 121 | y | 122 | z | 123 | { |
| 124 | | | 125 | } | 126 | ~ |






