Existe uma maneira de obter a localização dos usuários sem que o usuário instalar o Google Gears?

StackOverflow https://stackoverflow.com/questions/313805

Pergunta

Eu não quero que o usuário instalar o Google Gears para que eu possa mostrar-lhe a sua localização adivinhado. Existe uma maneira de obter o local sem ter que usar o Google Gears?

Eu encontrei http://www.wipmania.com/de/ blog / google-de geolocalização-api / mas não oferece um exemplo.

Foi útil?

Solução

Este é normalmente chamado IP Geolocation.

Um exemplo é aqui .

A coisa é, a maioria dos sites (se você está pensando em chamar isso como um serviço web) vai cobrar por isso. Caso contrário, jogar juntos um serviço web que agarra uma página de geolocalização, analisa-lo para o endereço, e retorna esse pedaço de informação.

Em PHP, isso parece funcionar muito bem:

<?php
 if(isset($_GET["ip"])){
   echo geolocate($_GET["ip"]);
 }

 function geolocate($ip){
   $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip");
   if(preg_match('/Location:(.*)/',$raw_html,$matches)){
     $location_raw = $matches[1];

     //Get rid of pesky HTML tags
     $location = preg_replace("/<[^>]*>/","",$location_raw);
     return $location;
   }else{
     return "ERROR";
   }
 }

Outras dicas

O Google fornece uma maneira de obter a localização do usuário via é AJAX API loader . Isto vai mesmo trabalhar sem engrenagens instalado. Basta incluir um apontador tag script para o JSAPI:

<script type="text/javascript" 
   src="http://www.google.com/jsapi?key=ABCDEFG">
</script>

Quando um aplicativo faz uso do carregador AJAX API, as tentativas carregador para geo localizar o cliente baseado em seu endereço IP. Se este processo for bem sucedido, a localização do cliente, como escopo o nível de metro, é disponibilizado na propriedade google.loader.ClientLocation. Se o processo não encontrar uma correspondência, esta propriedade é definida como null.

if (google.loader.ClientLocation){
  var center = new google.maps.LatLng(
    google.loader.ClientLocation.latitude,
    google.loader.ClientLocation.longitude
  );
  map.setCenter(center);
}

Quando preenchido, o objeto google.loader.ClientLocation é preenchida com as seguintes propriedades de granularidade de nível de metro:

  • ClientLocation.latitude - artigos da latitude baixa resolução associada com o endereço IP do cliente
  • ClientLocation.longitude - artigos da longitude baixa resolução associada com o endereço IP do cliente
  • ClientLocation.address.city - fornece o nome da cidade associada com o endereço IP do cliente
  • ClientLocation.address.country - fornece o nome do país associado ao endereço IP do cliente
  • ClientLocation.address.country_code - fornece o nome do código de país ISO 3166-1 associado com o endereço IP do cliente
  • ClientLocation.address.region - fornece o nome de região específica país associado com o endereço IP do cliente

Uma coisa que atente para com um serviço de geolocalização ou biblioteca é que eles nunca será 100% exato. Nós usamos um, IP2Location , e ele realmente tem sido uma fonte constante de queixas para o nosso departamento de atendimento ao cliente. Estamos procurando maneiras de alterar o comportamento do site e pesando os fatores de removê-lo completamente.

As mentiras problema no fato de que a carga de associar o IP com um usuário é com o ISP usuários. Eles têm grandes blocos de faixas de IP, e registar que bloqueia pertencer a um local específico. O problema é que os ISPs muitas vezes não atualizar essas informações quando mudam blocos ou um bloco de cobre muito grande de uma área.

Por exemplo, eu vivo cerca de sessenta milhas ao norte de Manhattan, mas meu IP muitas vezes mostra que estou em Chicago com a maioria das ferramentas de pesquisa. Eu tenho FIOS, e falei com um par de outras pessoas que confirmaram o mesmo comportamento.

Você pode usar HTML5 para esta finalidade. Isso é muito simples. Aqui é exemplo.

Se os usuários estão no celular, Xitfy também é uma opção livre. Eles têm um pequeno cliente que depois que o usuário concorda podem ser perfeitamente instalado em seus celulares. Você pode então chamar uma API REST com base para obter a sua latitude / longitude exatas provenientes de GPS / Wi-Fi ou celular torre.

Eles suportam Android, Windows Mobile, BlackBerry e Symbian, que abrange quase todos os smartphones.

Você pode geocodificar o endereço IP usando este código simples. Ele funciona muito bem. Tente isto:

function functionname(Your IP Here)
{

    $ip = $ClientIP;

    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");

    $json = json_decode($json,true);

    return $json;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top