Я сейчас работаю с Google API с Ioni c 4, я пытаюсь реализовать метод, который принимает адрес в записи и возвращает широту и долготу этого адреса (геокодирование). Когда я пытался реализовать этот метод, у меня была такая проблема:
Тип 'Observable' нельзя назначить типу 'Observable':
Код функции:
geocodeAddress(location: string): Observable<Location> {
return this.waitForMapsToLoad().pipe(
switchMap(() => {
return new Observable(Location => {
this.geocoder.geocode({address: location}, (results, status) => {
if (status === google.maps.GeocoderStatus.OK) {
observer.next({
lat: results[0].geometry.location.lat(),
lng: results[0].geometry.location.lng()
});
} else {
console.log('Error - ', results, ' & Status - ', status);
observer.next({ lat: 0, lng: 0 });
}
observer.complete();
});
});
})
);
}`
Класс местоположения:
export interface Location {
lat: number;
lng: number;
}
Импорт:
import { Injectable } from '@angular/core';
import { MapsAPILoader } from '@agm/core';
import { Observable } from 'rxjs';
import { Subject } from 'rxjs/Subject';
import { of } from 'rxjs/observable/of';
import { filter, catchError, tap, map, switchMap } from 'rxjs/operators';
import { fromPromise } from 'rxjs/observable/fromPromise';
import { Location } from './Position';
Произошла ошибка:
TS2322: Type 'Observable<unknown>' is not assignable to type
'Observable<Location>'.
Type '{}' is missing the following properties from
type 'Location': lat, lng
Я видел людей, имеющих такую проблему, но не ту же, мог пожалуйста, помогите мне?