【发布时间】:2018-04-08 21:27:17
【问题描述】:
我对 Angular 还很陌生,我认为这是一个基本问题。
我像这样创建我的地图
<agm-map [latitude]="lat" [longitude]="lng">
<agm-marker [latitude]="location.lat" [longitude]="location.lng" *ngFor="let location of locations; let i=index">
<agm-snazzy-info-window [maxWidth]="200" [closeWhenOthersOpen]="true">
<ng-template>
<strong>{{location.title}}</strong>
<p>adresse</p>
</ng-template>
</agm-snazzy-info-window>
</agm-marker>
</agm-map>
当我手动设置标记时,一切正常,但是当我使用 *ngFor 循环遍历我的列表时,会创建标记的 html,但显然是在地图的脚本查找标记之后,所以没有标记被渲染(地图本身就是)。
来自我的控制器:
export class LocationMapComponent implements OnInit {
lat: number = 51.678418;
lng: number = 7.809007;
locations: Location[];
async ngOnInit() {
}
public async getLocations() {
this.locations = await this._locationService.getLocations();
}
constructor(private _locationService:LocationService, private _coreCOMService: CoreCOMService, private _coreLanguageService: CoreLanguageService, private _coreLogService: CoreLogService, private _componentFactoryResolver: ComponentFactoryResolver, private _coreSystemService: CoreSystemService) {
this.getLocations();
}
}
这些位置是从一个从远程数据库中获取它们的服务中加载的。我确实认为问题在于地图是在执行 ngFor 循环之前渲染的,我不确定如何确保首先执行循环或如何告诉地图仅在循环之后(重新)渲染标记完成了。
如前所述,这可能是非常基本的,但我现在不知所措,谢谢。
【问题讨论】:
-
我遇到了同样的问题
-
位置数组的纬度/经度是否键入为数字?我有一个类似的问题,从 API 作为字符串返回的 latlng。
-
@Dale 这确实是一个字符串。我将其更改为数字,现在它可以工作了。这让我有点困惑,对我来说,这似乎无关紧要,因为 lat 和 lng 仅粘贴到 html 中,因此它是字符串还是数字都无关紧要,对吧? p.s.你应该把它变成一个答案,这样我就可以检查它。
标签: angular ngfor angular-google-maps