MapDisplayer.kt 1.55 KB
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)")
            }
        }
    }
}