Свойство 'filter' не существует для типа 'Observable <Geoposition>'. Карты Гугл - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение для заказа такси, которое использует Ionic Geolocation и Firebase Firestore. Мой код не работал с пакетом firestore, поэтому мне пришлось обновить rxjs до версии 6. Он вызвал ошибку

'Property 'filter' does not exist on type 'Observable<Geoposition>'. '

Вот мой код

import { filter } from 'rxjs/operators';



    const subscription = this.geo.watchPosition()
                          .filter((p) => p.coords !== undefined) //Filter Out Errors
                          .subscribe(position => {
                          let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                          this.map.setCenter(latLng);
                          this.lat = position.coords.latitude;
                          this.long = position.coords.longitude;
                          console.log(this.long + ' ' + this.lat);
});

мой файл package.json

"@ionic-native/core": "~4.15.0",
"@ionic-native/geolocation": "^4.17.0",
"@ionic-native/splash-screen": "~4.15.0",
"@ionic-native/status-bar": "~4.15.0",
"@ionic/storage": "2.2.0",
"angularfire2": "^5.1.0",
"cordova-plugin-geolocation": "^4.0.1",
"firebase": "^5.5.7",
"ionic-angular": "3.9.2",
"ionic-native": "^2.9.0",
"ionicons": "3.0.0",
"rxjs": "^6.3.3",
"rxjs-compat": "^6.3.3",

Что не так с моим кодом?

1 Ответ

0 голосов
/ 08 ноября 2018

Спасибо @JB Nizet и @martin за их вклад. Я только что вспомнил, что в последних версиях rxJs вы должны использовать оператор .pipe при объединении операторов txjs, таких как фильтры и отображение. вот мой обновленный код

const subscription = this.geo.watchPosition()
                          .pipe(filter((p) => p.coords !== undefined)) //Filter Out Errors
                          .subscribe(position => {
                          let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                          this.map.setCenter(latLng);
                          this.lat = position.coords.latitude;
                          this.long = position.coords.longitude;
                          console.log(this.long + ' ' + this.lat);
});
...