Blame view
src/app/component/map/map.component.ts
1.59 KB
287033a62 add vessel positi... |
1 |
import {Component, OnInit} from '@angular/core'; |
c4e00deb9 add map |
2 |
import * as L from 'leaflet'; |
287033a62 add vessel positi... |
3 |
import {CircleMarker} from 'leaflet'; |
c4e00deb9 add map |
4 5 |
import {Vessels} from '../../model/vessels'; import {VesselsService} from '../../service/vessels.service'; |
287033a62 add vessel positi... |
6 |
import {Message} from '../../model/message'; |
c666d6db6 add map graph and... |
7 8 9 10 11 12 13 |
@Component({ selector: 'app-map', templateUrl: './map.component.html', styleUrls: ['./map.component.scss'] }) export class MapComponent implements OnInit { |
c4e00deb9 add map |
14 |
vessels: Vessels; |
287033a62 add vessel positi... |
15 16 |
public map: L.Map; circleMarkers: Map<number, CircleMarker> = new Map<number, CircleMarker>(); |
c666d6db6 add map graph and... |
17 |
|
287033a62 add vessel positi... |
18 19 |
constructor(private vesselsService: VesselsService) { } |
c666d6db6 add map graph and... |
20 21 |
ngOnInit(): void { |
c4e00deb9 add map |
22 |
this.initMap(); |
287033a62 add vessel positi... |
23 |
this.connectVesselObservable(); |
c4e00deb9 add map |
24 25 26 27 28 |
} connectVesselObservable(): void { this.vesselsService.currentVessels.subscribe(vessels => { this.vessels = vessels; |
287033a62 add vessel positi... |
29 |
this.updateMap(); |
c4e00deb9 add map |
30 31 32 33 |
}); } initMap(): void { |
287033a62 add vessel positi... |
34 35 36 |
this.map = L.map('map', { preferCanvas: true }).setView([0, 0], 1); |
c4e00deb9 add map |
37 |
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { |
287033a62 add vessel positi... |
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
attribution: 'map', }).addTo(this.map); } addCircleMarker(message: Message, color: string): void { const circleMarker = L.circleMarker([+message.latitude, +message.longitude], { radius: 0.1, color }).addTo(this.map); this.circleMarkers.set(Number(message.mmsi), circleMarker); } updateMap(): void { let nbMessage = 0; this.vessels.vessels.forEach(((vessel, key) => { const color = vessel.getColor(); vessel.messages.forEach((message) => { nbMessage++; this.addCircleMarker(message, color); }); })); |
c666d6db6 add map graph and... |
60 61 62 |
} } |