1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (głosów: 1, średnia ocena: 5,00)
Loading...Loading...

Inne API geolokalizacji

W rozdziale

Kwestia Internet Explorera

Internet Explorer do wersji 9 (9.0RC1) nie obsługuje API geolokalizacji W3C, które opisałem w tym rozdziale. Ale nie panikuj! W przeglądarkach tych można posiłkować się specjalnym skryptem JavaScript. Nie jest to dokładnie to samo, co API geolokalizacji W3C, ale ma takie same zastosowanie.

Skoro już jesteśmy przy temacie starych platform, należy podkreślić, że wiele starych telefonów komórkowych miało własne API geolokalizacyjne, np. BlackBerry, Nokia, Palm oraz OMTP BONDI. Oczywiście każde z nich jest inne i różni się od API W3C. Uff!

Jedyny ratunek w skrypcie geoPosition.js

geoPositon.js to otwarta i dostępny na licencji MIT biblioteka JavaScript zacierająca różnice między API lokalizacyjnym W3C, a usługami geolokalizacyjnymi IP i API platform mobilnych. Aby z niej skorzystać, należy na dole strony umieścić element <script>. (W istocie można go umieścić w dowolnym miejscu, ale skrypty znajdujące się w części <head> spowalniają ładowanie strony. Dlatego nie rób tego!)

Nie pozwól wejść sobie na głowę

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Dive Into HTML5</title>
</head>
<body>
  ...
  <script src="geoPosition.js"></script>
</body>
</html>

Teraz możesz używać dowolnego API geolokalizacji, jakie jest dostępne.

if (geoPosition.init()) {
  geoPosition.getCurrentPosition(geoSuccess, geoError);
}

Przeanalizujemy ten kod instrukcja po instrukcji. Najpierw wywołujemy funkcję init(). Funkcja ta zwraca true, gdy dostępne jest jakieś obsługiwane API geolokalizacji.

if (geoPosition.init()) {

Wywołanie funkcji init() nie powoduje znalezienia pozycji. Pozwala jedynie przekona się, czy zdobycie tych informacji jest możliwe. Aby sprawdzić lokalizację, należy wywołać funkcję getCurrentPosition().

  geoPosition.getCurrentPosition(geoSuccess, geo_error);

Funkcja getCurrentPosition() uruchamia w przeglądarce algorytm wyświetlający pytanie do użytkownika o pozwolenie na sprawdzenie jego pozycji. Jeśli przeglądarka standardowo obsługuje API geolokalizacji, wyświetli to zapytanie w typowy dla siebie sposób.

Funkcja getCurrentPosition() pobiera jako argumenty dwie funkcje zwrotne. Jeżeli funkcji getCurrentPosition() uda się określić położenie użytkownika — tzn. użytkownik wyrazi zgodę i API geolokalizacji poprawnie zadziała — wywoła pierwszą funkcję zwrotną. W tym przypadku funkcja zwrotna powodzenia ma nazwę geo_success.

  geoPosition.getCurrentPosition(geoSuccess, geoError);

Funkcja ta pobiera jeden argument zawierający informację o położeniu.

Funkcja zwrotna powodzenia

function geoSuccess(p) {
  alert("Jesteś w miejscu o szerokości geograficznej " + p.coords.latitude +
        " i długości " + p.coords.longitude);
}

Jeżeli funkcji getCurrentPosition() nie uda się określić położenia użytkownika — bo użytkownik nie wyrazi zgody albo nie zadziała API geolokalizacji — wywoła drugą funkcję zwrotną. W tym przypadku funkcja zwrotna niepowodzenia ma nazwę geoError.

  geoPosition.getCurrentPosition(geoSuccess, geoError);

Funkcja zwrotna błędu przyjmuje dwa argumenty.

Funkcja zwrotna niepowodzenia

function geoError() {
  alert("Nie udało się ciebie znaleźć!");
}

Aktualnie biblioteka geoPosition.js nie obsługuje funkcji watchPosition(). Jeśli chcesz kogoś śledzić na bieżąco, musisz samodzielnie wielokrotnie wywoływać funkcję getCurrentPosition().

Dodaj komentarz









Newsletter

Subskrybując nasz newsletter masz pewność, że nie ominie Cię żadna nowość w serwisie!