Javascript-Geoposição

O que é Geoposição ou GeoLocalização?

É exatamente onde você está na superfície do globo terrestre.

Este posicionamento pode ser obtido de diversas maneiras, uma mais precisa que a outra.

A primeira maneira e a menos precisa é pelo seu endereço IP da Internet.

Se você está navegando por uma rede wifi fixa, o seu provedor de Internet ao dar um endereço IP para você navegar registra que a concessão do endereço ip x foi dada ao usuário y. Quanto ao endereço ip x o provedor compra e paga por uma faixa de ips da internet. Ele compra, por exemplo, 1000 endereços ips que pretende distribuir para 1000 clientes. Note que é literalmente 1 ip por cliente. Quanto ao Cliente y ele identifica pelo seu contrato firmado com ela, ao autenticar você na rede dele para permitir sua entrada ele armazena, por exemplo, o endereço MAC de sua placa de rede permite sua identificação. Portanto sabe que sempre que houver conexão com aquele MAC é o usuário y.
Na Internet fixa se ele sabe quem é você sabe onde é a sua instalação e é por aí que ele pega sua geolocalização.

Se você está navegando por uma rede wifi móvel, o seu provedor de Internet ao dar um endereço IP para você navegar registra que a concessão do endereço ip x foi dada ao usuário y. O processo é o mesmo da Internet Fixa, pelo MAC da sua placa de rede ele reconhece o usuário y. Quanto a sua posição ele obtém por triangulação das antenas de celular. Se você está conectado a Internet móvel está conectado a uma antena celular e a antena de celular sabe mais ou menos aonde você está pelo nível de sinal de rádio e pelo direcionamento da antena. Contudo uma antena pode dar a sua direção e a que distância da antena você está. Contudo existe um serviço nas antenas de celular que elas pedem para suas antenas irmãs mais próximas localizar seu celular e por triangulação acabam sabendo sua posição. Há um erro de aproximadamente 11 metros na utilização deste método.

A segunda maneira é pelo serviço de GPS do seu celular. Note que o GPS é o método de geolocalização mais preciso com um erro, no máximo, de 4 metros mas consome muita bateria. Se você pegar um motorista do uber verá que o aplicativo do uber opera sempre com a localização por ip ao invés do GPS porque GPS gasta muita bateria dos celulares e na maioria das vezes está desligado nos celulares.

Privacidade

Se você tem uma neura de perseguição ou é chegado a uma teoria da conspiração esqueça este recurso, não se encaixa no esquema devido ao fato que os serviços de geolocalização informam aonde você está no momento mas não armazenam onde você esteve, onde está indo, etc.
A única exceção é o maluco do Google que gosta de registrar os lugares onde você esteve no mês, que você achou do local que visitou entre outras besteiras. Contudo você pode ir no Google e pedir a ele apagar esses registros e ele faz isso apenas com fins comerciais, como saber sua opinião sobre um restaurante que você visitou para que possa passar essa opinião para os demais usuários do Google.
Importante : Todos os serviços de geolocalização não passam a informação sem antes pedir permissão ao usuário. Se for de interesse do usuário ele passa, se não for bloqueia...mas nunca automaticamente.

Segurança

Por motivos de segurança os provedores web inibem o funcionamento deste serviço. Sendo assim se você colocar este código em sua página HTML e rodar na sua máquina ele irá funcionar normalmente. Contudo ao mover ele para um provedor ( como é este caso ), o recurso será negado.

Como funciona ?

Com o refinamento dos browsers a maioria deles incluiu os recursos de geolocalização em seus serviços. Para usar é bem simples e se conhece um pouco de javascript fica moleza :

<script>
            var nav = null;
        
            function pegarPosicao() {
                document.getElementById("status").innerHTML = "aguarde...";

                if (nav == null) {
                    nav = window.navigator;
                }

                var geoloc = nav.geolocation;

                if (geoloc != null) {
                    geoloc.getCurrentPosition(RetornaPosicao, RetornaFalha);
                }

                function RetornaPosicao(posicao) {
                    //var mensagem = "Sucesso! Foi possível identificar sua posição";
                    //document.getElementById("status").innerHTML = mensagem;
                    var latitude = posicao.coords.latitude;
                    var longitude = posicao.coords.longitude;
                    document.getElementById("status").innerHTML = "Latitude: " + latitude + ", Longitude = " + longitude;

                    var url = "https://maps.google.com/?q=" + latitude + "," + longitude;
                    window.open(url);
                }

                function RetornaFalha() {
                    var mensagem = "Falha! Não foi possível identificar sua posição";
                    document.getElementById("status").innerHTML = mensagem;
                }
                 

            }
    
        </script>

<body style="font-family:Calibri,Verdana">
        <div>Esta página apenas exibe sua posição se você der permissão para isso. Suas coordenadas são apenas exibidas, NADA é salvo ou armazenado de nenhuma maneira.</div>
        <div id="status"></div>
        
        <input type="button" onclick="pegarPosicao()" value="Pegar Geolocalização" />
    </body>

Utilizando o recurso:

Esta página apenas exibe sua posição se você der permissão para isso. Suas coordenadas são apenas exibidas, NADA é salvo ou armazenado de nenhuma maneira.
O provedor web bloqueia esse serviço mas seu browser local irá pedir sua permissão e o serviço funcionará.