Open huogerac opened 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
Este link pode ser útil https://love2dev.com/blog/html-geolocation/
É 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.
[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
Funcionou:
Descobrimos que com apenas JS conseguimos acessar o GPS do fone com:
navigator.geolocation.getCurrentPosition(callbackSuccess, callbackError)
ou
navigator.geolocation.watchPosition(callbackSuccess, callbackError)
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.
Desafios:
navigator.geolocation
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
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.
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?
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
Precisamos conseguir acessar o GPS do dispositivo através de uma página WEB de forma a obter a posição atual
Vantagens