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}`);
}
基本上一切都很好。
我已经在移动设备上多次尝试此代码,但没有进行任何更改。
我又试了一次,突然就可以了。
我不知道发生了什么,但现在不做任何更改就可以了。
我正在使用地理定位 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}`);
}
基本上一切都很好。
我已经在移动设备上多次尝试此代码,但没有进行任何更改。 我又试了一次,突然就可以了。
我不知道发生了什么,但现在不做任何更改就可以了。