Cordova - Geolocalização

A geolocalização é usada para obter informações sobre a latitude e longitude do dispositivo.

Etapa 1 - Instalando o plug-in

Podemos instalar este plugin digitando o seguinte código para command prompt janela.

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

Etapa 2 - Adicionar botões

Neste tutorial, mostraremos como obter a posição atual e como observar as mudanças. Primeiro, precisamos criar botões que chamarão essas funções.

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

Etapa 3 - Adicionar ouvintes de eventos

Agora queremos adicionar ouvintes de eventos quando o dispositivo estiver pronto. Adicionaremos o exemplo de código abaixo paraonDeviceReady função em index.js.

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

Etapa 3 - Criar funções

Duas funções devem ser criadas para dois ouvintes de eventos. Um será usado para obter a posição atual e o outro para observar a posição.

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');
   }
}

No exemplo acima, estamos usando dois métodos - getCurrentPosition e watchPosition. Ambas as funções usam três parâmetros. Assim que clicarmosCURRENT POSITION botão, o alerta mostrará valores de geolocalização.

Se clicarmos WATCH POSITIONbotão, o mesmo alerta será acionado a cada três segundos. Dessa forma, podemos rastrear as mudanças de movimento do dispositivo do usuário.

NOTA

Este plugin está usando GPS. Às vezes, ele não pode retornar os valores no tempo e a solicitação retornará um erro de tempo limite. É por isso que especificamosenableHighAccuracy: true e maximumAge: 3600000.Isso significa que, se uma solicitação não for concluída a tempo, usaremos o último valor conhecido. Em nosso exemplo, estamos definindo maximumAge como 3600000 milissegundos.