Кто-нибудь знает о любом открытом RESTful API, который я могу вызвать для геокодирования IP-адреса пользователя по широте и долготе?
В идеале это будет что-то вроде: http://google.com/geocode_api/?IP=1.2.3.4, и оно вернет широту и долготу.
Кто-нибудь знает о любом открытом RESTful API, который я могу вызвать для геокодирования IP-адреса пользователя по широте и долготе?
В идеале это будет что-то вроде: http://google.com/geocode_api/?IP=1.2.3.4, и оно вернет широту и долготу.
Еще один бесплатный REST API с точной информацией о городе - http://freegeoip.net. Запросы довольно просты. Вы бы использовали что-то вроде
http://freegeoip.net/{format}/{ip_or_hostname}
геокодировать IP-адрес, где формат может быть csv
, xml
или json
. На их сайте есть все детали.
[ОБНОВЛЕНИЕ:] FreeGeoIP.net не был постоянно доступен в прошлом как общественная служба. Программное обеспечение, однако, всегда было открытым исходным кодом и доступно на Github. Запустить локальную установку с помощью Docker довольно легко, если вам нужен высоконадежный сервис или ваш сценарий использования превышает текущую квоту в 15.000 запросов/час.
Здесь пара с простыми вызовами...
Примеры вызовов: -
Пример возвращаемого XML (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>
Вы можете использовать API google: http://code.google.com/apis/ajax/documentation/#ClientLocation
Edit
Пример:
<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"); }
}
На моем сайте я использую http://ip-api.com/ для получения местоположения с IP-адреса. У них хорошие пределы (до 150 запросов в минуту). Ipinfo.io является бесплатным только для менее 1000 запросов в день.
Это пример вывода:
(
[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
)
Это код PHP, который вы можете использовать:
$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
Вы можете найти БЕСПЛАТНУЮ базу данных Geo, которая всегда обновляется здесь http://www.maxmind.com/app/geolitecity
и вы можете создать новую службу С# для использования этого Geo DB, например http://www.maxmind.com/app/csharp
вы можете попробовать его онлайн с помощью ссылки ниже http://www.maxmind.com/app/lookup_city