目标是在地图上绘制圆以定义地理围栏规则,并根据圆的坐标和半径更新表单字段。
我在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}}仅在光标从圆中移出或单击圆外的地图后才更新。任何想法?
答案 0 :(得分:0)
我发现其他人可能会受益的窍门!您需要手动打勾以触发模板中的更新!
this.appRef.tick();
正在导入:
ApplicationRef
在构造函数中:
private appRef: ApplicationRef