2008-11-24 23 views
7

Je ne veux pas que l'utilisateur installe Google Gears pour que je puisse lui montrer son emplacement deviné. Existe-t-il un moyen d'obtenir l'emplacement sans avoir à utiliser Google Gears? J'ai trouvé http://www.wipmania.com/de/blog/google-geolocation-api/ mais il n'offre pas d'exemple.Existe-t-il un moyen d'obtenir l'emplacement des utilisateurs sans que l'utilisateur n'installe Google Gears?

+0

Cela a toujours eu les meilleurs résultats pour moi: http://united-coders.com/christian-harms/free-ip-location-script –

+0

Vous pouvez faire un appel à un tiers API comme le mien, https://ipdata.co – Jonathan

Répondre

9

Ceci est généralement appelé IP Géolocalisation.

Un exemple est here. Le fait est que la plupart des sites (si vous envisagez d'appeler cela comme un service Web) vous factureront pour cela. Sinon, lancez un service Web qui récupère une page de géolocalisation, l'analyse pour l'adresse et renvoie cette information.

En PHP, cela semble fonctionner assez bien:

<?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"; 
    } 
} 
5

Une chose à surveiller avec un service de géolocalisation ou d'une bibliothèque est qu'ils ne seront jamais précis à 100%. Nous en utilisons un, IP2Location, et il a été une source constante de plaintes auprès de notre service à la clientèle. Nous cherchons des moyens de modifier le comportement du site et de peser les facteurs de l'élimination complète. Le problème réside dans le fait que la charge d'associer l'IP à un utilisateur est avec le fournisseur d'accès Internet de l'utilisateur. Ils ont de grands blocs de plages IP, et ils enregistrent quels blocs appartiennent à un emplacement spécifique. Le problème est que les FAI ne mettent souvent pas ces informations à jour lorsqu'ils déplacent des blocs ou qu'un bloc couvre une zone trop grande. Par exemple, j'habite à une soixantaine de kilomètres au nord de Manhattan, mais mon IP montre souvent que je suis à Chicago avec la plupart des outils de recherche. J'ai FIOS, et j'ai parlé à quelques autres personnes qui ont confirmé le même comportement.

10

Google fournit un moyen d'obtenir l'emplacement de l'utilisateur via AJAX API loader. Cela fonctionnera même sans Gears installé. Il suffit de comprendre une balise de script pointant vers le JSAPI:

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

Lorsqu'une application utilise le chargeur API AJAX, le chargeur tente de géo localiser le client en fonction de son adresse IP. Si ce processus aboutit, l'emplacement du client, étendu au niveau métropolitain, est disponible dans la propriété google.loader.ClientLocation. Si le processus ne parvient pas à trouver une correspondance, cette propriété est définie sur null.

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

Lorsqu'il est rempli, le fichier google.loader.objet ClientLocation est rempli avec les propriétés de granularité niveau de métro suivantes:

  • ClientLocation.latitude - fournit la latitude basse résolution associée à l'adresse IP du client
  • ClientLocation.longitude - fournit la longitude basse résolution associée à l'adresse IP du client
  • ClientLocation.address.city - fournit le nom de la ville associée à l'adresse IP du client
  • ClientLocation.address.country - fournit le nom du pays associé à l'adresse IP du client
  • ClientLocation.address.country_code - fournit le nom du code de pays ISO 3166-1 associé à l'adresse IP du client
  • ClientLocation.address.region - fournit le pays nom de la région spécifique associée à l'adresse IP du client
+0

Pour mon site Web, j'ai analysé ce taux de réussite est de 54%. Ce n'est pas très impressionnant :( – Varun

1

Si vos utilisateurs sur mobile , Xitfy est également une option gratuite. Ils ont un petit client qui, après que l'utilisateur accepte, peut être installé de façon transparente sur leur téléphone. Vous pouvez ensuite appeler une API basée sur REST pour obtenir leur lat/lon exacte à partir de gps/wifi ou de la tour de téléphonie cellulaire.

Ils prennent en charge Android, Windows Mobile, BlackBerry et Symbian qui couvre presque tous les smartphones.

3

Vous pouvez utiliser HTML5 à cette fin. C'est plutôt simple. Here est un exemple.

1

Vous pouvez géocoder l'adresse IP à l'aide de ce code simple. Cela fonctionne très bien. Essayez ceci:

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; 
}