Cordova - Geolokalizacja

Geolokalizacja służy do uzyskiwania informacji o szerokości i długości geograficznej urządzenia.

Krok 1 - Instalacja wtyczki

Możemy zainstalować tę wtyczkę, wpisując następujący kod do command prompt okno.

C:\Users\username\Desktop\CordovaProject>cordova plugin add cordova-plugin-geolocation

Krok 2 - Dodaj przyciski

W tym samouczku pokażemy, jak uzyskać aktualną pozycję i jak obserwować zmiany. Najpierw musimy utworzyć przyciski, które będą wywoływać te funkcje.

<button id = "getPosition">CURRENT POSITION</button>
<button id = "watchPosition">WATCH POSITION</button>

Krok 3 - Dodaj detektory zdarzenia

Teraz chcemy dodać detektory zdarzeń, gdy urządzenie jest gotowe. Dodamy poniższy przykład kodu doonDeviceReady funkcja w index.js.

document.getElementById("getPosition").addEventListener("click", getPosition);
document.getElementById("watchPosition").addEventListener("click", watchPosition);

Krok 3 - Utwórz funkcje

Należy utworzyć dwie funkcje dla dwóch detektorów zdarzeń. Jeden posłuży do uzyskania aktualnej pozycji, a drugi do oglądania pozycji.

function getPosition() {
   var options = {
      enableHighAccuracy: true,
      maximumAge: 3600000
   }
   var watchID = navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

   function onSuccess(position) {
      alert('Latitude: '          + position.coords.latitude          + '\n' +
         'Longitude: '         + position.coords.longitude         + '\n' +
         'Altitude: '          + position.coords.altitude          + '\n' +
         'Accuracy: '          + position.coords.accuracy          + '\n' +
         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
         'Heading: '           + position.coords.heading           + '\n' +
         'Speed: '             + position.coords.speed             + '\n' +
         'Timestamp: '         + position.timestamp                + '\n');
   };

   function onError(error) {
      alert('code: '    + error.code    + '\n' + 'message: ' + error.message + '\n');
   }
}

function watchPosition() {
   var options = {
      maximumAge: 3600000,
      timeout: 3000,
      enableHighAccuracy: true,
   }
   var watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);

   function onSuccess(position) {
      alert('Latitude: '          + position.coords.latitude          + '\n' +
         'Longitude: '         + position.coords.longitude         + '\n' +
         'Altitude: '          + position.coords.altitude          + '\n' +
         'Accuracy: '          + position.coords.accuracy          + '\n' +
         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
         'Heading: '           + position.coords.heading           + '\n' +
         'Speed: '             + position.coords.speed             + '\n' +
         'Timestamp: '         + position.timestamp                + '\n');
   };

   function onError(error) {
      alert('code: '    + error.code    + '\n' +'message: ' + error.message + '\n');
   }
}

W powyższym przykładzie używamy dwóch metod - getCurrentPosition i watchPosition. Obie funkcje używają trzech parametrów. Po kliknięciuCURRENT POSITION przycisk, alert pokaże wartości geolokalizacji.

Jeśli klikniemy WATCH POSITIONprzycisk, ten sam alert będzie wyzwalany co trzy sekundy. W ten sposób możemy śledzić zmiany ruchu urządzenia użytkownika.

UWAGA

Ta wtyczka korzysta z GPS. Czasami nie może zwrócić wartości na czas, a żądanie zwróci błąd przekroczenia limitu czasu. Dlatego określiliśmyenableHighAccuracy: true i maximumAge: 3600000.Oznacza to, że jeśli żądanie nie zostanie ukończone na czas, użyjemy zamiast tego ostatniej znanej wartości. W naszym przykładzie ustawiamy maximumAge na 3600000 milisekund.