Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

twpesquisa

Geolocalização

Recommended Posts

Bom Dia Amigos, tudo bem ?

 

Estou desenvolvendo um site, e um cliente me pediu para criar um mecanismo onde ao acessarem o site dele, o mesmo consiga pegar a Latitude e Longitude e com base nessas duas informações, obter a cidade, estado, endereço e bairro, semelhante a este link:

 

http://maps.google.com/maps/api/geocode/json?address=-30.0354438,-51.2265477&sensor=false

 

Obtendo estes dados, salvaria estas informações no banco e teria um "controle" de quem acessou.

 

Como eu poderia fazer isso, usando PHP ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo num sei se vai te ajudar muito, mas eu fiz uma parada assim uma vez, mas foi pelo ip do usuário, tentei lembrar e fiz uma pesquisa sobre o geoip.js: https://www.google.com.br/search?q=pegar+posi%C3%A7%C3%A3o+do+usuario+do+site&ie=utf-8&oe=utf-8&gws_rd=cr&ei=IoTMVbWqKsSIwgTX-7VY#q=jquery+geoip.js

 

talvez ajude,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara dá uma olhada no google analytics vc coloca um JS no seu site e ele lhe traz uma porade de informações.

 

Dai tem tb a API dele para vc puxar algumas coisas pro seu site, link da API em PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Eduardo Giullyanny acredito que localização por IP não seja tão eficiente, pois o usuario pode estar localizado em um determinado ponto e o IP pode estar em outro local.

A ideia é usar como se fosse um GPS, apartir da latitude e longitude, ele apresenta os dados.

 

Talvez eu esteja equivocado, mas é esta a visão que tenho, me corrijam se eu estiver errado. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontre esse link https://documentacoes.wordpress.com/2011/07/29/geocodificacao-%E2%80%93-converter-endereco-em-latitude-e-longitude-com-google-maps/ e observe que a ideia é ao informar o endereço obter a latitude e longitude. O que necessito é o contrário, veja esse código abaixo:

 

Ao abrir esse documento, via web, ele solicita permissão para obter a localização e com isso monta o mapa. A partir disso, ao invés de obter o mapa, gostaria de obter o endereço da localização baseado nesta ideia http://maps.google.com/maps/api/geocode/json?address=-30.0354438,-51.2265477&sensor=false


<!DOCTYPE html>
<html>
<body onload="getLocation()">
<p id="demo"></p>

<div id="mapholder"></div>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
  else{x.innerHTML="Geolocalização não é suportada nesse browser.";}
  }
 
function showPosition(position)
  {

  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;  

  lat=position.coords.latitude;
  lon=position.coords.longitude;
  latlon=new google.maps.LatLng(lat, lon)
  mapholder=document.getElementById('mapholder')
  mapholder.style.height='400px';
  mapholder.style.width='600px';
 
  var myOptions={
  center:latlon,zoom:18,
  mapTypeId:google.maps.MapTypeId.ROADMAP,
  mapTypeControl:false,
  navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
  };
  var map=new google.maps.Map(document.getElementById("mapholder"),myOptions);
  var marker=new google.maps.Marker({position:latlon,map:map,title:"Você está Aqui!"});
  }
 
function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="Usuário rejeitou a solicitação de Geolocalização."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Localização indisponível."
      break;
    case error.TIMEOUT:
      x.innerHTML="O tempo da requisição expirou."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="Algum erro desconhecido aconteceu."
      break;
    }
  }
</script>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

realizei uma alteração no código e consegui fazer funcionar, quase 100%.

O que acontece:

No código existem duas variáveis PHP que recebem a latitude e longitude, se eu informar manualmente o resultado é positivo, dá certo, agora se eu tentar passar os valores usando o java script dá um erro, não sei o que estou errando.

 

acredito que não estou sabendo pasar o resultado do JavaScript para o PHP.

 

Conseguem me dar uma força ?

<!DOCTYPE html>
<html>
<body onload="getLocation()">
<p id="demo"></p>
<script>
//Variavel para imprimir dentro da DIV demo
var x=document.getElementById("demo");

//Variaveis para receber o resultrado da geolocalização e passar para as variáveis do PHP
var varLatitude = ''; 
var varLongitude = ''; 

function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
  else{x.innerHTML="Seu browser não suporta Geolocalização.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
         "<br>Longitude: " + position.coords.longitude; 
  varLatitude.innerHTML = position.coords.latitude; 
  varLongitude.innerHTML = position.coords.longitude; 
  }


function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="Usuário rejeitou a solicitação de Geolocalização."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Localização indisponível."
      break;
    case error.TIMEOUT:
      x.innerHTML="A requisição expirou."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="Algum erro desconhecido aconteceu."
      break;
    }
  }
</script>


<?php
function getaddress($lat,$lng){
    $url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.trim($lat).','.trim($lng).'&sensor=false';
    $json = @file_get_contents($url);
    $data=json_decode($json);
    $status = $data->status;
    if($status=="OK")
        return $data->results[0]->formatted_address;
    else
        return false;
}

$lat= "<script>document.write(varLatitude)</script>";
$lng= "<script>document.write(varLongitude)</script>";

//$lat= "-30.0354438";
//$lng= "-51.2265477";

$address= getaddress($lat,$lng);
if($address){
    echo $address;
}else{
    echo "Nao encontrado!";
}

?>



</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FerdzFernando
      Por que ele está trazendo localização EUA no emulador android studio? É possível fazer essa correção ?
    • Por juliomarques75
      Olá pessoal, estou aqui para pedir ajuda, mas não para me dar mastigado nada, mas alguém que possa me mostrar o caminho das pedras para minha duvida.
      Seguinte, como faço para o site abrir determinada área ou pagina, de acordo onde ele esta acessando?
      Exemplo, se estou na cidade "B" ele abre determinada pagina, e se vou para a cidade "F" ele abre outra pagina, falo assim pq cada pagina vai possuir uma determinada consulta ao banco de dados e realizar a pesquisa em uma tabela especifica para aquela região.
      Se alguém puder me ajudar e me orientar pra que lado seguir agradeço muito...
       
      Abraço a todos!
    • Por Webster Moitinho
      Estou tentando criar log de acessos em Banco de Dados com base em IP e Geolocalização. Para tanto estou usando um script disponibilizado por GeoIP-DB. Quando faço o teste local, dá tudo certo. Me dá a minha cidade, cep, latitude longitude... Porém, quando subo para a nuvem, ele mostra esses dados do servidor, e não os meus.
      Meu código php está assim:
      date_default_timezone_set('America/Sao_Paulo'); $json = file_get_contents('https://geoip-db.com/json'); $data = json_decode($json); $cidade = $data->city; $cep = $data->postal; $lat = $data->latitude; $long = $data->longitude; $PDO = new PDO( 'mysql:host=' . HOST . ';dbname=' . DB, USER, PASS ); $sql = "INSERT INTO `stat` (`id_stat`, `cidade`, `cep`, `latitude`, `longitude`) VALUES (NULL, $cidade, $cep, $lat, $long)"; $compile = $PDO->prepare($sql);  
    • Por oomaikoo
      Boa noite pessoal, estou tentando fazer um código, para mostrar um banner em meu site, quando o usuário entrar, baseado na localização dele. É basicamente o seguinte: a API de geolocalização retorna o nome da cidade, e, se for a cidade, então mostre o banner. Se não for, mostre outro. O código JavaScript que estou usando é esse:
      <script type="application/javascript"> function geoip(json){ var city = document.getElementById("user_city"); city.textContent = json.city; } </script> <script async src="https://get.geojs.io/v1/ip/geo.js"></script> A cidade é: <span id="user_city"></span>

      Esse código retorna o nome da cidade no <span id>.

      Porém eu preciso fazer um IF, ELSE no próprio JavaScript, para mostrar o banner ou não. Seria basicamente assim:
      <script type="application/javascript"> function geoip(json){ var city = document.getElementById("user_city"); city.textContent = json.city; } if (city == "nomedacidade") { document.write ("<img src='banner1.jpg'></img>"); } else { document.write ("<img src='banner2.jpg'></img>"); } </script> <script async src="https://get.geojs.io/v1/ip/geo.js"></script>

      O problema é que a variável city não fica setada dentro do if, não retorna o nome da cidade, eu só queria comparar no if o nome da cidade com o que a API retorna.
      Alguém tem alguma ideia?
    • Por mpcarvalho
      Pessoal, seguinte. Eu sei somente o basicão de JS, peguei um script para obter a localização do usuário que acessar a minha página, estou testando algumas funções inicialmente para realizar outras aplicações futuras, dado que nunca utilizei essa função antes.
       
      Dúvida 1 = Quero melhorar a precisão dos dados que irei receber do usuário, para isso já pesquisei e encontrei a seguinte função: 
       
      {enableHighAccuracy:true, maximumAge:30000, timeout:27000}
       
      Onde posso utiliza-la no meu código abaixo?
       
      <script>
          window.onload = getLocation;
          
      function getLocation() {
        if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(showPosition);  
        } else {
            location.href="https://google.com";
        }
      }
      function showPosition(position) {
           var latitude = position.coords.latitude; 
          var longitude =  position.coords.longitude;
          var accuracy = position.coords.accuracy;
          $.ajax({
              method: "post",
              url: "page.php",
               data: {'latitude': latitude, 'longitude': longitude, 'accuracy': accuracy},
               success: function(data){
                   location.href="https://google.com";
               }
             });
          }
      </script>
       
      Dúvida 2 = Quando o usuário rejeitar o fornecimento de sua localização, como posso redireciona-lo par ama URL mesmo assim, sendo que na forma acima não funcionou.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.