huogerac / trot-geo-tracking

Aplicação para salvar trajetos de trots
https://trot-geo-tracking-brown.vercel.app
10 stars 7 forks source link

Definir forma de acessar GPS do fone para obter a posição #7

Open huogerac opened 1 year ago

huogerac commented 1 year ago

Precisamos conseguir acessar o GPS do dispositivo através de uma página WEB de forma a obter a posição atual

Vantagens

geotracking-ObterPosicao drawio-v1

tomasrajao commented 1 year ago

A forma que postei anteriormente foi o index.html que o @Lgou disponibilizou (app de terceiros), com deploy no Vercel. Então, sem muita novidade.

Criei um Pull Request 11 com um código JS simples, que acessa a localização do celular e atualiza com o clique do botão, funcionalidade acessível também pelo link no Vercel. Podemos discutir sobre a aplicabilidade da solução

huogerac commented 1 year ago

Este link pode ser útil https://love2dev.com/blog/html-geolocation/

rafaelatwwf commented 1 year ago

É importante confirmar qual é o crs (coordinates reference system) que o aparelho celular usa para a localização (lat/long). Mais provavelmente é o WGS84 (epgs 4326). E em caso diferente aparelhos/sistemas operacionais usem diferentes crs, aí é recomendável transformar todos para um só crs, antes de armazenar no banco de dados.

luxu commented 1 year ago

[UPDATE] Iphone 8 - navegadores: Chrome e Brave após configurar as permissões de localização passaram a funcionar perfeitamente, mas o Safari não está funcionado

huogerac commented 1 year ago

Funcionou:

huogerac commented 1 year ago

image

Descobrimos que com apenas JS conseguimos acessar o GPS do fone com:

      navigator.geolocation.getCurrentPosition(callbackSuccess, callbackError)
      ou
      navigator.geolocation.watchPosition(callbackSuccess, callbackError)
mauriciodoerr commented 1 year ago

https://developer.mozilla.org/pt-BR/docs/Web/API/Geolocation/watchPosition

Pode ser uma saída para capturar o percurso. Mas pode drenar bateria se deixar rodando de forma a logar qualquer minima alteração de localização.

huogerac commented 1 year ago

Desafios:

HenriqueCCdA commented 1 year ago

Fiz um PR explorando os outros atributos da Geolocation API

https://trot-geo-tracking-git-issue7outrasgeoapi-huogerac.vercel.app/

Quando fica vazio é porque a API retorno nulo pois o device não tem aquela funcionalidade implementada.

Eu usei este link como referencia:

https://w3c.github.io/geolocation-api/#dom-geolocationcoordinates-altitudeaccuracy

huogerac commented 1 year ago

Com o último código que é para ficar escutando a mudança de posição, temos um pequeno problema que é ficar recebendo a mesma posição várias vezes.

image

Uma implementação seria ter uma variável últimaPosição e se o lat, long do position que chega no success for o mesmo do últimaPosição, fazemos um return. Será que faz sentido isto, ou tem algo melhor que conseguimos configurar nas options do watchPosition?

tomasrajao commented 1 year ago

image

huogerac commented 1 year ago

A estratégia atual é tentar utilizar ao máximo o GPS que conseguimos obter usando o próprio navegador através da api nativa dos navegadores (navigator.geolocation)

Depois de descobrir as limitações podemos fazer novas tentativas com PWA, CORDOVA, FLUTTER e outra tecnologia que faça sentido e #27

Alguns testes estão registrados na Issue #8