получить значение от сервиса, который имеет наблюдаемый API Angular Google Map - PullRequest
0 голосов
/ 10 декабря 2018

Я создаю угловой проект, в котором мне нужно добавить компонент карты в проект.У меня есть служебный файл 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

1 Ответ

0 голосов
/ 10 декабря 2018

Внутри метода subscribe присвойте значения переменной.

resValues: your_Type;
this.subscribe_event$.subscribe((response) => {
    this.resValues = response; 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...