如何根据IP地址获取用户机器的准确经纬度
How to obtain accurate latitude and longitude of user machine based on IP address
在我基于 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 来获得所需的确切内容?预先感谢您的任何回复。
您可以使用 MaxMind's GeoIP service / database which has two versions: GeoIP2 and (Legacy) GeoIP. They provide free databases and commercial databases, the latter of which is more accurate. They have a GeoIP2 PHP SDK on Github and Legacy GeoIP is included with PHP.
MaxMind GeoIP2 Demo Page 允许您输入 IP 地址并返回以下数据:
- 坐标(lat/lon)
- 国家代码(2个字母的国家代码)
- 域
- ISP
- 位置(城市、州、国家、大洲)
- 地铁代码
- 组织
- 邮政编码(例如邮政编码)
链接:
还有很多其他服务。你可能想看看这个:
Longitude and latitude value from IP address
Ricky,您可以使用 IP2Location 地理定位服务或数据库。它有两个版本:a) commercial and b) LITE. They have a developer 编程页面 API 在许多编程语言中。
有一个在线 demo 页面允许您使用单个 IP 地址获取以下数据:
- 位置(国家、州、城市)
- 坐标(经纬度)
- 海拔
- 邮政编码
- Phone(IDD 和区号)
- 域名
- ISP 名称
- 时区
- 连接速度
- Weather Station(气象站名称和代码)
- 移动运营商(mnc、mcc、品牌)
- 使用类型
在我基于 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 来获得所需的确切内容?预先感谢您的任何回复。
您可以使用 MaxMind's GeoIP service / database which has two versions: GeoIP2 and (Legacy) GeoIP. They provide free databases and commercial databases, the latter of which is more accurate. They have a GeoIP2 PHP SDK on Github and Legacy GeoIP is included with PHP.
MaxMind GeoIP2 Demo Page 允许您输入 IP 地址并返回以下数据:
- 坐标(lat/lon)
- 国家代码(2个字母的国家代码)
- 域
- ISP
- 位置(城市、州、国家、大洲)
- 地铁代码
- 组织
- 邮政编码(例如邮政编码)
链接:
还有很多其他服务。你可能想看看这个: Longitude and latitude value from IP address
Ricky,您可以使用 IP2Location 地理定位服务或数据库。它有两个版本:a) commercial and b) LITE. They have a developer 编程页面 API 在许多编程语言中。
有一个在线 demo 页面允许您使用单个 IP 地址获取以下数据:
- 位置(国家、州、城市)
- 坐标(经纬度)
- 海拔
- 邮政编码
- Phone(IDD 和区号)
- 域名
- ISP 名称
- 时区
- 连接速度
- Weather Station(气象站名称和代码)
- 移动运营商(mnc、mcc、品牌)
- 使用类型