gpt4 book ai didi

cordova - ionic 2 Geolocation clearWatch 或取消订阅

转载 作者:行者123 更新时间:2023-12-02 17:20:40 25 4
gpt4 key购买 nike

所以我正在使用 Google map 和 Ionic 2。Cordova 有一个用于检索用户地理位置的插件,我有两个关于该插件的问题。

但在我提出问题之前,这是我的代码

import { Geolocation } from 'ionic-native';

watchPosition(marker) {
let watch = Geolocation.watchPosition({
//enableHighAccuracy: true
});

watch.subscribe((pos) => {
marker.setPosition({
lat: pos.coords.latitude,
lng: pos.coords.longitude
});
});

// stop watching if the user starts dragging the map
this.map.addListener('dragstart', () => {
// There might be two ways to do this, but non of them works
watch.unsubscribe();
Geolocation.clearWatch(watch);
});
}
  1. 据我所知,有两种方法可以停止监视用户的位置:watch.unsubscribe()Geolocation.clearWatch(watch) .但是,我不知道除了 unsubscribe 之外还有什么区别。类型为 Observable另一个是从 Geolocation 导入的插入。我应该使用哪一个?

  2. 上面的问题其实是微不足道的,我现在遇到的最重要的问题是它们都不起作用。 watch.unsubscribe()给出错误 [ts] Property 'unsubscribe' does not exist on type 'Observable<Geoposition>'.Geolocation.clearWatch(watch)给我[ts] Property 'clearWatch' does not exist on type 'typeof Geolocation'.有什么我想念的吗?

最佳答案

如果您查看 Ionic Native Typescript wrapper对于 geolocation plugin ,你可以看到:

  • 它不直接公开 clearWatch() 函数
  • its watchPosition() wrapper返回一个 Observable,其 unsubscribe() 操作是使用内部 watchId 在地理定位插件上调用 clearWatch()。因此,清除 watch 的 Ionic Native 方法是在 Geolocation.watchPosition() 返回的 Observable 上调用 unsubscribe()

但是,如果由于某种原因不起作用,您可以直接调用插件 API:

declare var navigator: any;

// Add watch
let watchId = navigator.geolocation.watchPosition((position) => {
// do something with position
} , (error) => {
// do something with error
}), options);

// Clear watch
navigator.geolocation.clearWatch(watchId);

关于cordova - ionic 2 Geolocation clearWatch 或取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42969315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com