MapDisplayer.kt
1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package map
import application.model.observableVessel
fun clearMap(map: LeafletMapView) {
clearMapCanvas(map)
clearMapCluster(map)
}
fun clearMapCluster(map: LeafletMapView) {
map.execScript(
"""
|myMap.removeLayer(markerClusters)
|var markerClusters = L.markerClusterGroup({spiderfyOnMaxZoom: false, disableClusteringAtZoom: 9});
""".trimMargin()
)
}
fun clearMapCanvas(map: LeafletMapView) {
map.execScript(
"""
|myRenderer.removeFrom(myMap)
|var myRenderer = L.canvas({ padding: 0.5 });
""".trimMargin()
)
}
fun displayAllMessageOnMap(map: LeafletMapView) {
clearMap(map)
observableVessel.vessels.forEach { (_, value) ->
value.messages.forEach { (_, message) ->
map.execScript("L.circleMarker([${message.latitude}, ${message.longitude}], {renderer: myRenderer, radius: 0.01, color: '#${message.getHexColor()}'}).addTo(myMap)")
}
}
}
fun displayAllMessageOnMap(map: LeafletMapView, selectedMMSI: Int) {
clearMap(map)
observableVessel.vessels.forEach { (_, value) ->
value.messages.forEach { (_, message) ->
if (selectedMMSI == message.mmsi) {
map.execScript("L.circleMarker([${message.latitude}, ${message.longitude}], {renderer: myRenderer, radius: 2, color: '#ff001e'}).addTo(myMap)")
} else {
map.execScript("L.circleMarker([${message.latitude}, ${message.longitude}], {renderer: myRenderer, radius: 0.01, color: '#${message.getHexColor()}'}).addTo(myMap)")
}
}
}
}