如何使用maxmind从IP地址获取纬度和经度?

时间:2018-07-12 22:31:07

标签: geocoding geoip geoip2

我已经使用geoip php扩展已有一段时间了。 此扩展程序无法像以前那样为我提供纬度和经度。

在maxmind网站内部,我可以阅读:

  

注意:经过仔细考虑,考虑到客户   反馈,我们已决定不删除经纬度   来自GeoLite2数据库的坐标。我们正在   查看我们所有GeoLite2和GeoIP数据库中使用的坐标   确保没有滥用风险。

还有其他方法(或免费替代方法)从IP地址获取纬度和经度吗?

3 个答案:

答案 0 :(得分:3)

http://ip-api.com/提供了一项免费服务,您可以使用。

http://ip-api.com/json/111.222.333.444/发出GET请求(在您要查找的末尾添加自己的IP)

结果将如下所示:

{
    "status": "success",
    "country": "COUNTRY",
    "countryCode": "COUNTRY CODE",
    "region": "REGION CODE",
    "regionName": "REGION NAME",
    "city": "CITY",
    "zip": "ZIP CODE",
    "lat": LATITUDE,
    "lon": LONGITUDE,
    "timezone": "TIME ZONE",
    "isp": "ISP NAME",
    "org": "ORGANIZATION NAME",
    "as": "AS NUMBER / NAME",
    "query": "IP ADDRESS USED FOR QUERY"
}

我相信这是您要询问的数据; LAT / LON是此API的标准返回。请注意,不要每分钟执行超过150个请求,否则它们将禁止您的主机发出进一步的请求。

答案 1 :(得分:1)

您可以使用免费的IP2Location LITE DB5和PHP库。

PHP库 https://www.ip2location.com/developers/php

IP2Location LITE DB5 https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude

<?php
require_once 'IP2Location.php';

/*
    Default file I/O lookup
*/
$db = new \IP2Location\Database('./databases/IP-COUNTRY-SAMPLE.BIN', \IP2Location\Database::FILE_IO);

$records = $db->lookup('8.8.8.8', \IP2Location\Database::ALL);

echo '<pre>';
echo 'IP Number             : ' . $records['ipNumber'] . "\n";
echo 'IP Version            : ' . $records['ipVersion'] . "\n";
echo 'IP Address            : ' . $records['ipAddress'] . "\n";
echo 'Country Code          : ' . $records['countryCode'] . "\n";
echo 'Country Name          : ' . $records['countryName'] . "\n";
echo 'Region Name           : ' . $records['regionName'] . "\n";
echo 'City Name             : ' . $records['cityName'] . "\n";
echo 'Latitude              : ' . $records['latitude'] . "\n";
echo 'Longitude             : ' . $records['longitude'] . "\n";
echo 'Area Code             : ' . $records['areaCode'] . "\n";
echo 'IDD Code              : ' . $records['iddCode'] . "\n";
echo 'Weather Station Code  : ' . $records['weatherStationCode'] . "\n";
echo 'Weather Station Name  : ' . $records['weatherStationName'] . "\n";
echo 'MCC                   : ' . $records['mcc'] . "\n";
echo 'MNC                   : ' . $records['mnc'] . "\n";
echo 'Mobile Carrier        : ' . $records['mobileCarrierName'] . "\n";
echo 'Usage Type            : ' . $records['usageType'] . "\n";
echo 'Elevation             : ' . $records['elevation'] . "\n";
echo 'Net Speed             : ' . $records['netSpeed'] . "\n";
echo 'Time Zone             : ' . $records['timeZone'] . "\n";
echo 'ZIP Code              : ' . $records['zipCode'] . "\n";
echo 'Domain Name           : ' . $records['domainName'] . "\n";
echo 'ISP Name              : ' . $records['isp'] . "\n";
echo '</pre>';
?>

答案 2 :(得分:1)

他们最近改变了关于删除纬度/经度数据的主意,因此它将在现有的GeoLite2中再次可用。在重新部署纬度/经度数据之前,他们只是在验证数据而已。

  

注意:经过仔细考虑,考虑到客户   反馈,我们已决定不删除经纬度   来自GeoLite2数据库的坐标。*我们正在   查看我们所有GeoLite2和GeoIP数据库中使用的坐标   确保没有滥用风险。

参考:https://dev.maxmind.com/geoip/geoip2/geolite2/

[编辑]因此,要根据以上内容进行实际转储,您将能够像往常一样继续操作,而无需实施新的库/服务