我需要从 Web 客户端获取用户的位置。由于某些国家/地区的 Google 限制(有关更多信息,请参阅Stackoverflow 上的此问题),以下代码将返回一个空对象(在浏览器控制台、chrome 、safari等中):navigator.geolocation所以,我不能在地理定位 APIgetCurrentLocation中使用其他方法, 我正在使用不同的方法来查找用户位置(IP 库),但它不能正常工作。还有其他方法可以找到用户位置坐标吗?更新(2020 年 7 月 12 日):由于误解,我已经更新了我的帖子。 有些人说它适用于HTTPS。于是我打开Chrome浏览器,搜索StackOverflow(这个网站是众所周知的HTTPS)现在在控制台上,没有任何 navigator.geolocation 的数据:
4 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
您可以尝试使用地理定位 API 获取用户位置,并使用用户的 IP 地址进行回退,以防 API 在用户的环境中不起作用。
const success = (position) => {
// use position
};
const fallback = () => {
// try getting it via the user's IP
}
navigator.geolocation.getCurrentPosition(success, fallback);
当然,这完全取决于您需要多少精度。IP 地址本地化精度不高。
慕少森
TA贡献2019条经验 获得超9个赞
要在 Web 客户端上查找用户的地理位置,您可以使用HTML Geolocation API和Google Geolocation(请参阅 stackoverflow 上的这个问题)。但是总是需要获得用户的许可才能在浏览器上知道他们的位置(浏览器位置权限)。如果用户不允许,Geolocation api 将不会提供任何结果。
尽管允许用户使用,但与移动设备(使用内置 GPS)不同,计算机上运行的 Web 浏览器所产生的某些地理位置不会精确或什至不接近(没有内置 GPS)。如果用户使用 VPN 或代理,找到精确的地理位置也将是麻烦的。
所以总结一下,我们无法得到;
每个用户的地理位置未经他们的许可
100% 准确度,无需在其 Web 访问设备上使用本机 GPS,并且在使用 vpn 时,代理正在使用中。
添加回答
举报
0/150
提交
取消