Quelqu'un connaît-il une API RESTful ouverte que je peux appeler pour géocoder l'IP d'un utilisateur à la latitude et à la longitude?
Idéalement, ce serait quelque chose comme: http://google.com/geocode_api/?IP=1.2.3.4 et il retournerait la latitude et la hauteur.
Un autre REST avec des informations précises sur la ville serait http://freegeoip.net Les demandes sont assez simples. Vous utiliseriez quelque chose comme
http://freegeoip.net/{format}/{ip_or_hostname}
pour géocoder une adresse IP, où le format peut être csv
, xml
ou json
. Leur site Web contient tous les détails.
[MISE À JOUR:] FreeGeoIP.net n'était pas disponible dans le passé en tant que service public. Le logiciel était cependant toujours open source et est disponible sur Github . Il est assez facile de faire fonctionner votre installation locale à l'aide de Docker, si vous avez besoin d'un service hautement fiable ou si votre cas d'utilisation dépasse le quota actuel de 15 000 requêtes/heure.
Voici un couple avec de simples appels ...
Exemples d'appels: -
Exemple de XML retourné (ipinfodb): -
<Response>
<Ip>122.169.8.137</Ip>
<Status>OK</Status>
<CountryCode>IN</CountryCode>
<CountryName>India</CountryName>
<RegionCode>10</RegionCode>
<RegionName>Haryana</RegionName>
<City>Kaul</City>
<ZipPostalCode></ZipPostalCode>
<Latitude>29.85</Latitude>
<Longitude>76.6667</Longitude>
<Timezone>0</Timezone>
<Gmtoffset>0</Gmtoffset>
<Dstoffset>0</Dstoffset>
</Response>
Vous pouvez utiliser l'API Google: http://code.google.com/apis/ajax/documentation/#ClientLocation
Modifier
Exemple:
<script type="text/javascript"
src="http://www.google.com/jsapi?key=ABCDEFG"></script>
<script type="text/javascript">
google.load("maps", "2.x", {callback: initialize});
function initialize() {
if (google.loader.ClientLocation) {
var lat = google.loader.ClientLocation.latitude;
var long = google.loader.ClientLocation.longitude;
alert ("lat: " + lat + "\nlong: " + long);
}
else { alert ("not available"); }
}
La
Sur mon site, j'utilise http://ip-api.com/ pour obtenir l'emplacement à partir de l'adresse IP. Ils ont de belles limites (jusqu'à 150 requêtes par minute). Ipinfo.io est gratuit uniquement pour moins de 1000 demandes par jour .
Voici un exemple de sortie:
(
[as] => AS8075 Microsoft Corporation
[city] => Redmond
[country] => United States
[countryCode] => US
[isp] => Microsoft bingbot
[lat] => 47.674
[lon] => -122.1215
[org] => Microsoft bingbot
[query] => 157.55.39.67
[region] => WA
[regionName] => Washington
[status] => success
[timezone] => America/Los_Angeles
[Zip] => 98052
)
C'est PHP code que vous pouvez utiliser:
$ip = $_SERVER['REMOTE_ADDR'];
$result = json_decode(file_get_contents("http://ip-api.com/json/{$ip}"));
//print_r ($result);
echo "{$result->lat},{$result->lon}";//48.156,17.142
Vous pouvez trouver une base de données Geo gratuite toujours mise à jour ici http://www.maxmind.com/app/geolitecity
et vous pouvez créer un nouveau service C # pour utiliser cette Geo DB comme http://www.maxmind.com/app/csharp
vous pouvez l'essayer en ligne avec le lien ci-dessous http://www.maxmind.com/app/lookup_city