Проблема связывания AGM MAP - PullRequest
0 голосов
/ 24 октября 2019

Цель состоит в том, чтобы нарисовать круг на карте, чтобы определить правило геозоны и обновить поля формы на основе координат и радиуса круга.

Я добавил обработку radius_changed внутри описателя circlecomplete, например:

const _self = this;
const precision = 1000000;
// handle draging
google.maps.event.addListener(circle, 'radius_changed', function () {
  _self.updateLocationData({
    latitude: Math.round(circle.getCenter().lat() * precision) / precision,
    longitude: Math.round(circle.getCenter().lng() * precision) / precision,
    radius: Math.round(circle.getRadius())
  });
});

Он запускает метод updateLocationData, определенный как:

updateLocationData(data: any) {
this.circleUpdateSource$.next(data);

}

То, что яЯ подписан в ngOnInit:

this.circleUpdateSource.subscribe((data: any) => {
  console.log(data);
  this.test = data.radius;
  this.rule = {
    radius: data.radius,
    lat: data.latitude,
    lng: data.longitude
  };
});

Все работает хорошо, кроме привязки данных в подписке на шаблон. Console.log выводит сразу же, когда событие инициируется, но {{test}} или {{rule}} обновляется ТОЛЬКО после того, как курсор выходит из круга или если я нажимаю на карте за пределами круга. Любая идея?

1 Ответ

0 голосов
/ 24 октября 2019

Я обнаружил, что другие могут выиграть! Вам нужно вызвать галочку вручную, чтобы запустить обновление в шаблоне!

this.appRef.tick();

В импорте:

ApplicationRef

В конструкторе:

private appRef: ApplicationRef
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...