没有使用HTML5 API的地理位置定位

3

大家好!

我需要确定当前用户所在的城市。对于使用HTML5的现代浏览器来说这不是问题。但是我需要支持老旧的浏览器(例如IE 7、8)。首先,我考虑使用IP地址来查找位置。但实现起来并不容易(我需要一个包含位置信息的实时数据库)。免费的网络服务无法提供我需要的信息。其中很多可以确定国家(但无法确定城市)。

我尝试使用http://www.geoplugin.net/,但该服务仅返回国家信息(和其他一些免费服务一样)。我还尝试使用带有IP地址的CSV数据库(但在互联网上我只能找到旧版本)。

你知道有哪些免费的方法可以确定用户所在城市吗?谢谢!


你有任何想法吗? - user1562274
2个回答

1
一些老旧的浏览器在某种程度上支持获取用户位置信息。回到IE7/8时代,几个不同的浏览器以不同的方式处理地理位置信息。这对开发人员来说很麻烦。我现在想不起来如何在IE7/8中实现了,但是记得曾经写过一个包装库。现在大多数人使用包装库,该库可以为所有不同的浏览器实现处理。Bing Maps V7 JavaScript将所有旧的和新的功能封装到其API中的公共GeoLocationProvider类中,如果您需要在网站上显示地图,则可以考虑使用该选项:http://msdn.microsoft.com/en-us/library/hh125833.aspx

有趣的是,但看起来 MS 类使用了 HTML5 API。在我的情况下,我希望能够在不需要询问用户同意的情况下检测国家。 - And Finally
在这种情况下,您需要获取用户的IP地址,然后从查找表中查找国家。有许多免费数据库提供这些数据。 - rbrundritt
谢谢@rbrundritt。我们是WordPress客户端,所以我们可以利用他们基于IP的地理位置插件。 - And Finally

0
您可以使用我们的地理位置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
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接