Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 ?
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
@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. :)
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>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>//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; echo "Nao encontrado!";
}
?>
</body>
</html>Alguem tem ideia o problema da passagem de variável do JS para PHP ?
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,