所以,我希望能够找到用户位置(即使它只是城市/城镇级别),当他们登录我网站的主页时。我认为这并非不可能,因为Google在您登录主页时似乎会这样做,它似乎会将您的搜索结果转移到您的区域等。
我能做些什么才能做到这一点?
答案 0 :(得分:13)
您可以使用具有各种准确度的GeoIP位置服务。可能还有其他IP位置数据库提供商。
另一个选择是尝试使用HTML5位置服务,例如http://html5demos.com/geo和http://dev.w3.org/geo/api/spec-source.html。
答案 1 :(得分:8)
您需要使用IP地理位置/协同定位API,例如this one等许多其他API。 This one拥有免费服务,只需要注册。
您还可以下载包含地理位置信息的数据库。这将适用于某种分辨率,但db表示静态快照,而现实可能会随着时间的推移而显着变化。 Here is a freely available CSV文件可以帮助您开始本地数据库方面的事情。 CSV文件(有点旧,最后更新于2009年8月)包含59,000个条目。
答案 2 :(得分:1)
你可以a)使用在线服务查找位置 - 许多人都有api,或者b)网上有很多可以下载的数据库。根据您需要的分辨率,您可能需要付费。但国家决议当然是免费提供的。尝试谷歌搜索“geo ip”或类似。
答案 3 :(得分:1)
由于我遇到的一些问题,我想添加另一个解决方案。所有先前的答案都非常有效。但是,如果您要使用HTML Geolocation API,则必须向用户请求位置权限。 IPinfo的效果很好,但是某些广告拦截器(如ublock)会阻止来自客户端的API攻击。
如果可以将DNS管理器更改为CLoudflare,则可以使用Cloudflare IP地理位置。您可以参考Don's的答案here
答案 4 :(得分:0)
如果您不关心超精确度,并且您不想通过提醒他们访问其位置的警报来骚扰您的用户,那么您可以使用FreeGeoIP之类的内容。我写了一个小jQuery插件,利用它。请参阅Locaternator。也支持jsonp
请求,以便您可以从任何网站使用它,包括仅限静态HTML的网站。
答案 5 :(得分:0)
您可以在HTML5中使用navigator.geolocation.getCurrentPosition
。它可以合理地跨平台,您可以将其构建到报告回数据库的网页中。
见
http://html5demos.com/geo
http://www.w3.org/TR/geolocation-API/
http://diveintohtml5.info/geolocation.html