У меня есть приложение, которое извлекает список участников из базы данных и отображает их на карте с помощью Google Map API.Возвращенные данные как показано ниже:
[
{
"id": 25,
"firstName": "D",
"middleName": "",
"lastName": "Test",
"lat": "39.2424525",
"lng": "-76.5124078",
"fullAddress": "132 main st baltimore maryland 21222",
"zip": "21222",
"draggable": false,
"enrollments": [
{
"id": 9,
"provider": "test",
"zone": "zone18",
"participantId": 25
}
]
}
...
]
HTML-код, который я использую для карты:
<div class="card">
<div class="card-body">
<agm-map [latitude]="lat" [longitude]="lng" [zoom]="zoom">
<agm-marker *ngFor="let m of participants"
[latitude]="m.lat"
[longitude]="m.lng"
[markerDraggable]="m.draggable"
[iconUrl]="{
url: mrk,
scaledSize: {
width: 45,
height: 50
}
}"
>
<agm-info-window>
<strong>Name: {{ m.firstName }} {{ m.lastName }}</strong>
</agm-info-window>
</agm-marker>
</agm-map>
</div>
</div>
Компонент
export class MapResultComponent implements OnInit {
participants: any[] = [];
mrk;
constructor(
private participantService: ParticipantService
) { }
ngOnInit() {
this.loadParticipants();
}
private loadParticipants() {
this.participantService.getAllActiveMap().subscribe(participants => {
this.participants = participants;
this.mrk = 'http://maps.google.com/mapfiles/ms/icons/green-dot.png';
for (let i = 0; i < participants.length; i++) {
if (participants[i].enrollments[0].zone === 'zone7') {
this.mrk = 'http://maps.google.com/mapfiles/ms/icons/red-dot.png';
}
}
});
}
}
Я знаючто это не очень хороший подход.Поскольку в возвращаемых данных у меня есть поле zone7
, все маркеры теперь становятся красными.Чего я хотел бы добиться, так это цветового кода по зонам.Это означает, что одни и те же зоны будут иметь одинаковый значок маркера.Зоны представляют собой простой категориальный текст, такой как zone1, zone2, zone3 .... zone24.Как я могу изменить значок маркера в зависимости от полей зоны?Любая помощь будет оценена.