从 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 地址获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章