ip-address - uplook - what is ip address
¿Geocodificar una dirección IP? (5)
Aquí hay una pareja con llamadas sencillas ...
Ejemplo de llamadas: -
Ejemplo de XML devuelto (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>
¿Alguien sabe de alguna API RESTful abierta a la que pueda llamar para geocodificar la IP de un usuario a la latitud y longitud?
Idealmente, sería algo como: http://google.com/geocode_api/?IP=1.2.3.4 y devolvería la latitud y longtitude.
En mi sitio, uso http://ip-api.com/ para obtener la ubicación desde la dirección IP. Tienen lindos límites (hasta 150 pedidos por minuto). Ipinfo.io es gratis solo por menos de 1000 solicitudes por día .
Esta es una salida de muestra:
(
[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
)
Este es el código PHP que puedes usar:
$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
Otra API REST gratuita con información precisa de la ciudad sería http://freegeoip.net Las solicitudes son bastante sencillas. Usarías algo como
http://freegeoip.net/{format}/{ip_or_hostname}
para geocodificar una dirección IP, donde el formato puede ser csv
, xml
o json
. Su sitio web tiene todos los detalles.
[ACTUALIZACIÓN:] FreeGeoIP.net no estuvo continuamente disponible en el pasado como un servicio público. Sin embargo, el software siempre fue de código abierto y está disponible en Github . Es bastante fácil poner en marcha su instalación local usando Docker, si necesita un servicio altamente confiable o su caso de uso excede la cuota actual de 15,000 solicitudes por hora.
Puede encontrar una base de datos Geo GRATUITA siempre actualizada aquí http://www.maxmind.com/app/geolitecity
y puede crear un nuevo servicio de C # para usar este Geo DB como http://www.maxmind.com/app/csharp
Puede probarlo en línea con el siguiente enlace http://www.maxmind.com/app/lookup_city
Puede utilizar la API de Google: http://code.google.com/apis/ajax/documentation/#ClientLocation
Editar
Ejemplo:
<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"); }
}
Al aire libre