从 IP 地址获取地理位置

Posted

技术标签:

【中文标题】从 IP 地址获取地理位置【英文标题】:Getting geolocation from IP address 【发布时间】:2014-02-13 21:04:17 【问题描述】:

我需要跟踪用户详细信息,因为需要该客户的位置和 IP 地址。 我从

获得了 IP 地址
$this->input->ip_address();

在 codiigniter 中。 现在的问题是我如何使用他们各自的 IP 地址在谷歌地图中确定他们的位置

【问题讨论】:

你为什么不google一下?? @Vicky Gonsalves:我做到了,但它不能正常工作...... 发布您的代码不起作用,您可以获得修复它的帮助。这个问题太模糊了,未知数太多,无法按原样回答。 我试过 gmaps.js 你的问题似乎重复了***.com/questions/4937517/… 【参考方案1】:

freegeoip.net 提供公共 HTTP API 来搜索 IP 地址的地理位置。它使用与城市相关的 IP 地址数据库以及时区、纬度和经度等其他相关信息。

每小时最多允许 15,000 个查询。 如果您需要更多,您可以在您自己的基础架构上将 freegeoip 作为 Web 服务器运行。见:freegeoip on github

【讨论】:

【参考方案2】:

html5 spec includes Geolocation 作为一种可行的(虽然通常不太准确)替代方案。随着 HTML 5 变得越来越流行,我认为我们可以期待在未来看到它成为标准。它也不需要使用外部 Web 服务或库。地理定位所需的一切都内置在客户端浏览器中。

我相信使用的主要方法是指定的 IP 地址。

【讨论】:

【参考方案3】:

只需使用 ipinfo.io

http://ipinfo.io/

它使用了一个位置api,我们可以发布IP地址,它将位置详细信息作为json返回:

我们可以通过 json 响应到 google Maps API 的经度和经度详细信息在地图上显示位置。

这是我使用的代码:

此脚本根据 json 响应创建具有纬度和经度的 Google 地图实例:

jQuery(document).ready(function()
    jQuery.get("http://ipinfo.io/202.88.237.138", function (response)
               
                   var lats = response.loc.split(',')[0]; 
                   var lngs = response.loc.split(',')[1];
                   map = new GMaps(
                       el: '#map',
                       lat: lats, //latitude
                       lng: lngs //longitude
                   );

               , "jsonp");
);

地图将显示在:

<div style="border:1px solid red; height:745px;" id="map"></div>

运行这个需要 Google Maps API gmaps.js..

【讨论】:

那是使用已弃用的 API v2 吗? 我从来没有说过它不是,我只是提到它不是(或接近)当前版本的 API。 得到它的工作......它还返回了我需要的城市和地区......谢谢......【参考方案4】:

Google Maps API 将使用 geoip 为您完成查找位置的工作。如果用户在移动设备上或有更准确的定位方式(如 GPS),它将改用它。

这是一个很好的起点:https://google-developers.appspot.com/maps/documentation/javascript/examples/map-geolocation

如果您绝对需要仅从 IP 获取位置,您可以抓取 third-party tools 以获取此信息。如果您在较大的项目中使用它,则应事先确保您获得许可。

【讨论】:

以上是关于从 IP 地址获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

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

从用户 IP 地址获取位置

用于从 IP 地址获取地理编码的 Java 库

PHP 从 IP 地址获取位置 MaxMind GEOIP

GEOIP 并获取计算机 IP 地址 位置?

从用户 ip 地址查找位置和区域