JS - 地理定位 API 即使在 HTTPS 上也无法在移动设备上运行

JS - Geolocation API not working on mobile even on HTTPS

我正在使用地理定位 API 获取用户当前位置,它在桌面上运行良好。在移动设备上(我在 Android 10,Chrome 上测试)它不会向用户询问位置许可,所以我当然得不到我需要的东西。

我正在使用 HTTP 在本地 Apache Web 服务器上进行开发。 我已经通过使用 Ngrok 公开我的本地主机来尝试使用 HTTPS(它可以 returns HTTP 和 HTTPS),但仍然无法正常工作。

这是JS代码:

var lng;
var lat;

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(getPosition);
}

function getPosition(position) {
  lng = position.coords.longitude;
  lat = position.coords.latitude;

  // Some other code here (does not affect the API)
}

编辑

我还检查了我的 phone 设置和 chrome 设置,它们都很好。我访问了其他一些使用相同 API 的网站,它们确实有效。

错误回调函数是什么return? 这应该是答案。

var lng;
var lat;

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(getPosition, error);
}

function getPosition(position) {
  lng = position.coords.longitude;
  lat = position.coords.latitude;

  // Some other code here (does not affect the API)
}

function error(err) {
  console.warn(`ERROR(${err.code}): ${err.message}`);
}

基本上一切都很好。

我已经在移动设备上多次尝试此代码,但没有进行任何更改。 我又试了一次,突然就可以了。

我不知道发生了什么,但现在不做任何更改就可以了。