Я использую Angular 6
Мне очень помог Up, но есть еще кое-что исправить. Вы можете использовать for () как Кришна или .forEach (), как и я, оба должны работать.
public markers: [] = [];
lat: number = 51.247680;
lng: number = 22.561402780001;
zoom: number = 15;
this.httpService.getBusstops().subscribe(
// "key" is not even needed here, it's just leftover of(from?) my previous idea
res => { res['response'].forEach((stop, key) => {
this.markers.push({
lat: parseFloat(stop['latitude']), // In api I have one "step" less than OP so I'm not doing 'res['response'].stop'
lng: parseFloat(stop['longitude']),
label: stop['name']
})
})} console.log(this.markers);
)
Далее в html
<agm-map [(latitude)]="lat" [(longitude)]="lng" [(zoom)]="zoom" [disableDefaultUI]="true" [zoomControl]="true" [(fitBounds)]='viewport'>
<agm-marker *ngFor="let marker of markers" [latitude]="marker['lat']" [longitude]="marker['lng']">
<agm-info-window>
<p>{{ marker.label }}</p>
</agm-info-window>
</agm-marker>
</agm-map>
Важно указывать строковые индексы как x ['y'].
Я не уверен, в чем разница и следует ли использовать [широта] или [(широта)], я думал, что это как-то связано с интерфейсами, но даже если я не использую какие-либо, я не вижу никакой разницы.