没有 HTML5 API 的地理定位

Posted

技术标签:

【中文标题】没有 HTML5 API 的地理定位【英文标题】:Geolocation without HTML5 API 【发布时间】:2013-10-13 13:35:02 【问题描述】:

全部!

我需要确定当前用户城市。使用 html5 这不是问题。但我需要支持旧浏览器(leke 即 7,8)。 首先,我想使用 IP 地址查找位置。但它不容易实现(我需要带有位置的实际数据库)。免费的网络服务没有提供我需要的信息。其中许多可以确定一个国家(但不能确定城市)。

我尝试使用http://www.geoplugin.net/,而这项服务只返回国家(作为和另一个免费)。 我尝试使用带有 IP 的 CSV 数据库(但在互联网上我可以找到旧版本)。

您知道确定用户城市的免费方法吗? 谢谢!

【问题讨论】:

你有什么想法吗? 【参考方案1】:

一些较旧的浏览器确实支持以某种形式获取用户位置。回到 IE7/8 时代,一些不同的浏览器以不同的方式处理地理定位。这对开发人员来说是一种痛苦。我这辈子都不记得如何在 IE7/8 中执行此操作,但记得在某些时候为此编写了一个包装器库。现在大多数人使用包装库来为他们处理所有不同的浏览器实现。 Bing Maps V7 javascript 将所有新旧功能封装到其 API 中的一个通用 GeoLocationProvider 类中,如果您的站点需要地图,这可能是一个选项:http://msdn.microsoft.com/en-us/library/hh125833.aspx

【讨论】:

有趣,但看起来 MS 类使用了 HTML5 API。就我而言,我希望能够检测国家/地区而无需征得用户的同意。 在这种情况下,您需要捕获用户的 IP 地址,然后从查找表中查找国家/地区。有一堆免费的数据库有这些数据。 谢谢@rbrundritt.. 我们是 WordPress 客户,所以我们可以利用他们基于 IP 的地理定位插件。【参考方案2】:

您可以使用我们的地理定位 API https://ip-api.io 来完成此任务。它提供国家、城市、邮政编码等数据

示例请求:

$.getJSON("http://ip-api.io/json/",
    function(result) 
        console.log(result);
    );

示例响应:


  "ip": "64.30.228.118",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "FL",
  "region_name": "Florida",
  "city": "Fort Lauderdale",
  "zip_code": "33309",
  "time_zone": "America/New_York",
  "latitude": 26.1882,
  "longitude": -80.1711,
  "metro_code": 528,
  "suspicious_factors": 
    "is_proxy": false,
    "is_tor_node": false,
    "is_spam": false,
    "is_suspicious": false
  

【讨论】:

以上是关于没有 HTML5 API 的地理定位的主要内容,如果未能解决你的问题,请参考以下文章

使用 html5 地理定位 api 创建地理围栏

HTML5地理定位,百度地图API,知识点熟悉

HTML5 地理定位 API 是如何在浏览器中实现的?

HTML5调用百度地图API进行地理定位实例

HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法

HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法