地理编码IP地址?

Tim*_*Tim 31 geocoding ip-address reverse-geocoding

有没有人知道我可以调用任何开放的RESTful API来将用户的IP地理编码为纬度和经度?

理想情况下,它将类似于:http://google.com/geocode_api/? IP = 1.2.3.4,它将返回纬度和经度.

Ste*_*erl 21

另一个具有城市准确信息的免费REST API将是http://freegeoip.net.请求非常简单.你会用类似的东西

http://freegeoip.net/{format}/{ip_or_hostname}
Run Code Online (Sandbox Code Playgroud)

地理编码IP地址,格式可以是csv,xmljson.他们的网站有所有细节.

[更新:] FreeGeoIP.net过去没有作为公共服务持续提供.但是,该软件始终是开源软件,可在Github上获得.如果您需要高度可靠的服务或者您的用例超过当前15.000个请求/小时的配额,那么使用Docker运行本地安装相当容易.

  • 截至 2014 年 12 月 30 日,freegeoip.net 服务似乎不再工作。不过,Andy 回复的 ipinfodb.com 服务仍然可用。 (2认同)
  • 截至2016年3月23日,freegeoip.net无效 (2认同)

And*_*son 8

这是一对简单的电话......

示例调用: -

返回的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> 
Run Code Online (Sandbox Code Playgroud)


Jos*_*iah 7

您可以使用google API:http: //code.google.com/apis/ajax/documentation/#ClientLocation

编辑

例:

<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"); }
 }
Run Code Online (Sandbox Code Playgroud)


Jas*_*net 6

在我的网站上,我使用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
)
Run Code Online (Sandbox Code Playgroud)

这是您可以使用的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
Run Code Online (Sandbox Code Playgroud)

  • 限制现在是150,如果超出限制,他们会禁止你([证明](http://ip-api.com/docs/))`我们的系统将自动禁止每分钟超过150个请求的任何IP地址.要取消你的IP,请点击这里 (2认同)