如何根据IP地址获取用户机器的准确经纬度

Posted

技术标签:

【中文标题】如何根据IP地址获取用户机器的准确经纬度【英文标题】:How to obtain accurate latitude and longitude of user machine based on IP address 【发布时间】:2015-06-20 06:16:36 【问题描述】:

在我基于 php 的应用程序中,我想在用户基于 IP 地址登录到 webapp 时捕获用户机器的位置。

我按照这个方法:

$url = "http://freegeoip.net/json/$ip";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);

我正在获取纬度和经度值,但这些值并不准确,而是绝对值。在响应中,我得到这样的 JSON:


["ip"]=> string(11) "59.90.210.9" 
["country_code"]=> string(2) "IN" 
["country_name"]=> string(5) "India" 
["region_code"]=> string(0) "" 
["region_name"]=> string(0) "" 
["city"]=> string(0) "" 
["zip_code"]=> string(0) "" 
["time_zone"]=> string(12) "Asia/Kolkata" 
["latitude"]=> int(20) 
["longitude"]=> int(77) 
["metro_code"]=> int(0) 
 

没有城市没有邮编。有没有更好的 API 可以根据需要获得确切的东西?提前感谢您的任何回复。

【问题讨论】:

IP 将永远给你一个确切的位置,如果城市是正确的你很幸运 【参考方案1】:

还有很多其他服务。你可能想看看这个: Longitude and latitude value from IP address

【讨论】:

【参考方案2】:

您可以使用MaxMind's GeoIP 服务/数据库,它有两个版本:GeoIP2 和(旧版)GeoIP。他们提供免费数据库和商业数据库,后者更准确。他们有一个GeoIP2 PHP SDK on Github 和Legacy GeoIP is included with PHP。

MaxMind GeoIP2 Demo Page 允许您输入 IP 地址并取回以下数据:

    坐标(纬度/经度) 国家代码(2 个字母的国家代码) 域 互联网服务供应商 位置(城市、州、国家、大陆) 地铁代码 组织结构 邮政编码(例如邮政编码)

链接:

    MaxMind's GeoIP2 and Legacy GeoIP product page GeoIP2 demo page (enter IPs and get results) GeoIP2-php SDK on Github GeoIP on PHP.net

【讨论】:

【参考方案3】:

Ricky,您可以使用 IP2Location 地理定位服务或数据库。它有两个版本:a)commercial 和 b)LITE。他们有一个developer 页面,其中包含许多编程语言的编程 API。

有一个在线的demo页面可以让你使用单个IP地址获取以下数据:

    位置(国家、州、城市) 坐标(纬度、经度) 海拔 邮政编码 电话(IDD 和区号) 域名 ISP 名称 时区 连接速度 气象站(气象站名称和代码) 移动运营商(mnc、mcc、品牌) 使用类型

【讨论】:

以上是关于如何根据IP地址获取用户机器的准确经纬度的主要内容,如果未能解决你的问题,请参考以下文章

Python根据域名批量获取IP地址和经纬度(2021.12.1)

Python根据域名批量获取IP地址和经纬度(2021.12.1)

Python根据域名批量获取IP地址和经纬度(2021.12.1)

从IP地址获取地理位置[重复]

如何通过经纬度坐标获取附近的地址信息?

微信小程序获取位置信息