Ionic - navigator.geolocation 返回空错误对象

问题描述 投票:0回答:3

我正在构建一个依赖地理位置的小型应用程序。我使用以下代码从设备获取当前位置:

var options = { maximumAge: 3000, timeout: 300000, enableHighAccuracy: true };
navigator.geolocation.watchPosition(function(result) {
  console.info(result);
}, function(error) {
  console.error(JSON.stringify(error));
}, options);

但是,这总是使用一个空错误对象来调用错误回调

1 123317 error {}

没有代码也没有消息,只是一个空对象。同样有趣的是,无论我设置什么超时,错误回调都会被称为“立即”。

我的 AndroidManifest.xml 如下所示:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

结果与我在模拟器中或直接在手机上运行它的天气相同。如果有人知道如何解决这个问题,我们将不胜感激。
    

这是因为返回的错误对象是一个特殊的对象。使用
javascript android cordova ionic-framework
3个回答
4
投票
不考虑继承的属性。如果您使用 Chrome 或 Safari,尤其如此。

$cordovaGeolocation
.getCurrentPosition()
.then((resp)=>{
  $scope.lat = resp.coords.latitude;
  $scope.lon = resp.coords.longitude;
}).catch((error)=> {
  $scope.errm = error.message;
  $scope.errc = error.code;
  console.log(error.code+" "+error.message)
});

您可以使用此代码查看错误代码和消息。如果您想查看完整的对象,您可以使用
SO Answer
来执行此操作。

就错误而言,有几个错误,例如需要安全来源或可能限制相同的 WiFi 连接。

PS:这也适用于 Geolocation 对象。

尝试下面的代码来检查错误它可能与不安全的来源有关,这意味着它不适用于私有IP

0
投票

https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features/

navigator.geolocation.getCurrentPosition( function(position) { console.log(position); }, function(error) { console.log(error.code + " " + error.message); } );

使用以下代码

-1
投票

var options = { enableHighAccuracy: true, timeout:5000, maximumAge: 0 };

© www.soinside.com 2019 - 2024. All rights reserved.