如何使用地理位置获取访问者的位置(即国家/地区)?

2022-08-30 04:06:17

我正在尝试扩展本机地理位置功能

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
    });
}

这样我就可以使用访问者的国家/地区名称(可能返回一个信息数组)。

到目前为止,我所能找到的只是显示Google地图界面的函数,但没有一个实际上给出了我想要的东西,除了这个库,它在此示例中运行良好,但由于某种原因在我的计算机上不起作用。我不知道为什么那里会出错。

无论如何,你知道我如何简单地从纬度和经度值返回一个包含国家,城市等信息的数组吗?


答案 1

您可以使用我的服务,http://ipinfo.io,为此。它将为您提供客户端IP,主机名,地理位置信息(城市,地区,国家,区号,邮政编码等)和网络所有者。下面是一个记录城市和国家/地区的简单示例:

$.get("https://ipinfo.io", function(response) {
    console.log(response.city, response.country);
}, "jsonp");

下面是一个更详细的 JSFiddle 示例,其中还打印出完整的响应信息,因此您可以查看所有可用的详细信息:http://jsfiddle.net/zK5FN/2/

该位置通常不如本机地理位置详细信息准确,但它不需要任何用户权限。


答案 2

如果您只需要用户所在的国家/地区,则无需查找该用户。您可以在任何IP到位置服务(如maxmindipregistryip2location)中查找他们的IP地址。这在大多数时候都是准确的。

以下是Ipregistry的客户端示例(免责声明,我正在为之工作):

fetch('https://api.ipregistry.co/?key=tryout')
    .then(function (response) {
        return response.json();
    })
    .then(function (payload) {
        console.log(payload.location.country.name + ', ' + payload.location.city);
    });

如果您确实需要获取他们的位置,则可以使用该方法获取他们的纬度/液化天然气,然后查询GoogleYahoo的反向地理编码服务。