geolocation.watchPosition()在离子4中不起作用

时间:2019-03-05 15:34:40

标签: location ionic4

您好,我是离子技术的学习者,目前在我的应用程序中,我正在尝试使用以下代码获取用户位置,但无法正常工作,我是指 lat longs 即将到来但是当用户将一个位置移动到另一个位置时,位置纬度非常缓慢,并且渴望更改,是否有更好的解决方案来获取用户当前位置,有人可以帮助我

 this.geolocation.getCurrentPosition().then((resp) => {
    }).catch((error) => {
        console.log('Error getting location', error);
    });

    let watch = this.geolocation.watchPosition();
    watch.subscribe((data) => {
        this.data = data;
        console.log("----->Watch latitude" + data.coords.latitude);
        console.log("-----> Watch logitude" + data.coords.longitude)
        console.log("-----> Watch accuracy" + data.coords.accuracy)
    });

1 个答案:

答案 0 :(得分:0)

您可以通过启用enableHighAccuracy选项来提高准确性:

this.geolocation.getCurrentPosition({ enableHighAccuracy: true })

this.geolocation.watchPosition({ enableHighAccuracy : true, timeout: 10000 })

您还可以传递参数以增加呼叫的频率,例如超时,这在自述文件中进行了说明:

“ enableHighAccuracy:提供一个提示,表明应用程序需要可能的最佳结果。默认情况下,设备会尝试使用基于网络的方法来检索位置。将此属性设置为true会告诉框架使用更准确的方法,例如卫星定位。(布尔)

timeout:允许从调用传递到navigator.geolocation.getCurrentPosition或geolocation.watchPosition的最大时间长度(毫秒),直到执行相应的geolocationSuccess回调为止。如果在这段时间内未调用geolocationSuccess回调,则会将geolocationError回调传递给PositionError.TIMEOUT错误代码。 (请注意,当与geolocation.watchPosition结合使用时,geolocationError回调可以在每个超时毫秒的时间间隔内调用!)(数字)

maximumAge:接受一个年龄不大于指定时间(以毫秒为单位)的缓存位置。 (数字)”

https://github.com/apache/cordova-plugin-geolocation