AGM MAP绑定问题

时间:2019-10-24 05:40:39

标签: angular google-maps-api-3

目标是在地图上绘制圆以定义地理围栏规则,并根据圆的坐标和半径更新表单字段。

我在circlecomplete手柄内添加了radius_changed处理,如下所示:

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 :(得分:0)

我发现其他人可能会受益的窍门!您需要手动打勾以触发模板中的更新!

this.appRef.tick();

正在导入:

ApplicationRef

在构造函数中:

private appRef: ApplicationRef