Я создаю угловой проект, в котором мне нужно добавить компонент карты в проект.У меня есть служебный файл map.service.ts
, в который интегрирован мой сервис API Google Map. Я хотел нарисовать круги (многоугольник) на карте и передать значения бэкэнду, там я добавил несколько прослушивателей событий, таких как circlecomplete, radius_changed ..и т. д. Это - то, где мои службы запускаются.
public initMap(mapElement: ElementRef, search: ElementRef, options: MapOptions) {
return this.init().pipe(
switchMap(() =>
this.createGoogleMap(mapElement.nativeElement, search.nativeElement, options)
),
exhaustMap(() =>
forkJoin(
this.subscribeToDrawingEvents('circlecomplete').pipe(
map(d => console.log(d))
),
this.subscribeToCenterChangeEvents('center_changed').pipe(
map(d => console.log(d))
),
this.subscribeToRadiusChangeEvents('radius_changed').pipe(
map(d => console.log(d))
),
this.subscribeToSearchboxEvents('places_changed')
)
)
);
}
в методе intimap, я создал JS, затем добавляю к компоненту.затем crateGoogleMap создайте карту.затем добавил несколько слушателей событий.Я подписываюсь на эту услугу из map.component.ts
.
ngOnInit() {
this.option = {
center: this.center ? this.center : { lat: 0, lng: 0 },
zoom: this.zoom ? this.zoom : 4,
markers: this.markers ? this.markers : []
};
this.subscribe_event$ = this.service.initMap(this.googleMap, this.searchInput, this.option);
this.subscribe_event$.subscribe();
} // ngOnInit()
. Я могу получить значения в разделе d
this.subscribeToCenterChangeEvents('center_changed').pipe(
map(d => console.log(d))
),
, но не могу получить значения для компонента.где я подписываюсь.это мой наблюдатель ....
private subscribeToCenterChangeEvents<E>(eventName: string): Observable<any> {
console.log('Circle Center Change listner added');
return Observable.create((obsever: Observer<any>) => {
google.maps.event.addListener(this.drawingManager, eventName, drwnCircle => {
const circle_radius: Number = drwnCircle.getRadius();
const circle_center: LatLng = drwnCircle.getCenter();
console.log(circle_radius);
obsever.next({ drwan_circle: circle_radius });
});
});
} // subscribeToCenterChangeEvents