在没有 Google API 的情况下使用浏览器 GeoLocation?

我需要从 Web 客户端获取用户的位置。由于某些国家/地区的 Google 限制(有关更多信息,请参阅Stackoverflow 上的此问题),以下代码将返回一个空对象(在浏览器控制台、chrome 、safari等中):

navigator.geolocation

所以,我不能在地理定位 APIgetCurrentLocation中使用其他方法, 我正在使用不同的方法来查找用户位置(IP 库),但它不能正常工作。

还有其他方法可以找到用户位置坐标吗?

更新(2020 年 7 月 12 日):

由于误解,我已经更新了我的帖子。 有些人说它适用于HTTPS。于是我打开Chrome浏览器,搜索StackOverflow(这个网站是众所周知的HTTPS)

http://img.mukewang.com/635a22b5000177a223901277.jpg

现在在控制台上,没有任何 navigator.geolocation 的数据:


http://img.mukewang.com/635a22bd000180c703640092.jpg

哈士奇WWW
浏览 116回答 4
4回答

互换的青春

API 的另一种选择可能是GeoJS API。它基于Maxmind 的 GeoLite 数据库。注意:在上述API中,所有HTTP请求都会重定向到HTTPS.

江户川乱折腾

您可以尝试使用地理定位 API 获取用户位置,并使用用户的 IP 地址进行回退,以防 API 在用户的环境中不起作用。const success = (position) => {  // use position};const fallback = () => {  // try getting it via the user's IP}navigator.geolocation.getCurrentPosition(success, fallback);当然,这完全取决于您需要多少精度。IP 地址本地化精度不高。

犯罪嫌疑人X

MDN 参考:此功能仅在安全上下文 ( HTTPS )、部分或所有支持的浏览器中可用。我认为您正在尝试在不起作用的开发模式下使用此功能。但是有一种方法可以在开发模式下解决这个问题,那就是在你的开发模式下使用假 https。更新(2020 年 7 月 12 日):我在 Stackoverflow 控制台中的地理位置对象(检查元素)。Geolocation 对象实际上是空的,您应该看到它的原型用户__proto__.如果您在项目中使用 create-react-app,则应在.env文件中添加HTTPS=true 。它对我有用。

慕少森

要在 Web 客户端上查找用户的地理位置,您可以使用HTML Geolocation API和Google Geolocation(请参阅 stackoverflow 上的这个问题)。但是总是需要获得用户的许可才能在浏览器上知道他们的位置(浏览器位置权限)。如果用户不允许,Geolocation api 将不会提供任何结果。尽管允许用户使用,但与移动设备(使用内置 GPS)不同,计算机上运行的 Web 浏览器所产生的某些地理位置不会精确或什至不接近(没有内置 GPS)。如果用户使用 VPN 或代理,找到精确的地理位置也将是麻烦的。所以总结一下,我们无法得到;每个用户的地理位置未经他们的许可100% 准确度,无需在其 Web 访问设备上使用本机 GPS,并且在使用 vpn 时,代理正在使用中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript