Commit a77940a0e4df24949acbc9367378018a6d2dad71
1 parent
99a1117739
Exists in
master
fix a bug when you select a boat it's now correctly displayed
Showing 2 changed files with 25 additions and 6 deletions Side-by-side Diff
src/app/component/map/map.component.ts
View file @
a77940a
... | ... | @@ -17,7 +17,8 @@ |
17 | 17 | selectedVessel: Vessel; |
18 | 18 | public map: L.Map; |
19 | 19 | renderer = L.canvas({padding: 0.5}); |
20 | - circleMarkers: Map<number, CircleMarker> = new Map<number, CircleMarker>(); | |
20 | + circleMarkers: Map<number, Array<CircleMarker>> = new Map<number, Array<CircleMarker>>(); | |
21 | + highlightedMarkerId: number; | |
21 | 22 | |
22 | 23 | constructor(private vesselsService: VesselsService, private selectedVesselService: SelectedVesselService) { |
23 | 24 | } |
... | ... | @@ -38,7 +39,10 @@ |
38 | 39 | connectSelectVesselObservable(): void { |
39 | 40 | this.selectedVesselService.currentVessel.subscribe(vessels => { |
40 | 41 | this.selectedVessel = vessels; |
41 | - this.updateMap(); | |
42 | + const mmsi = this.selectedVessel.getMMSI(); | |
43 | + if (mmsi !== undefined) { | |
44 | + this.highlightMarker(Number(this.selectedVessel.getMMSI())); | |
45 | + } | |
42 | 46 | }); |
43 | 47 | } |
44 | 48 | |
45 | 49 | |
46 | 50 | |
... | ... | @@ -58,15 +62,30 @@ |
58 | 62 | radius: 4, |
59 | 63 | color: '#ff0000', |
60 | 64 | }).addTo(this.map).bringToFront(); |
61 | - }else { | |
65 | + } else { | |
62 | 66 | circleMarker = L.circleMarker([+message.latitude, +message.longitude], |
63 | 67 | { |
64 | 68 | renderer: this.renderer, |
65 | - radius: 0.01, | |
69 | + radius: 1, | |
66 | 70 | color |
67 | 71 | }).addTo(this.map); |
68 | 72 | } |
69 | - this.circleMarkers.set(Number(message.mmsi), circleMarker); | |
73 | + if (!this.circleMarkers.has(Number(message.mmsi))){ | |
74 | + this.circleMarkers.set(Number(message.mmsi), new Array<CircleMarker>()); | |
75 | + } | |
76 | + this.circleMarkers.get(Number(message.mmsi)).push(circleMarker); | |
77 | + } | |
78 | + | |
79 | + highlightMarker(mmsi: number): void { | |
80 | + if (this.highlightedMarkerId !== undefined) { | |
81 | + const color = this.vessels.vessels.get(this.highlightedMarkerId).getColor(); | |
82 | + this.circleMarkers.get(this.highlightedMarkerId).forEach(value => value.setStyle({color, fillColor: color})); | |
83 | + this.circleMarkers.get(this.highlightedMarkerId).forEach(value => value.setRadius(1)); | |
84 | + | |
85 | + } | |
86 | + this.highlightedMarkerId = mmsi; | |
87 | + this.circleMarkers.get(mmsi).forEach(value => value.setStyle({fillColor: '#ff0000', color: '#ff0000', fillOpacity: 1})); | |
88 | + this.circleMarkers.get(mmsi).forEach(value => value.setRadius(4)); | |
70 | 89 | } |
71 | 90 | |
72 | 91 | updateMap(): void { |