add working speed-o-meter
This commit is contained in:
@@ -49,13 +49,30 @@ private fun fetchHaukPosition(haukUrl: String, callee: Activity) {
|
||||
|
||||
message = "{" + message.substringAfter("{");
|
||||
val hauk_response = json.decodeFromString<HaukResponse>(message)
|
||||
|
||||
val lat = hauk_response.points.last()?.getOrNull(0)
|
||||
val lon = hauk_response.points.last()?.getOrNull(1)
|
||||
val lat = hauk_response.points.last().getOrNull(0)
|
||||
val lon = hauk_response.points.last().getOrNull(1)
|
||||
if (lat != null && lon != null) {
|
||||
|
||||
val lastlat = hauk_response.points.getOrNull(hauk_response.points.size - 2)?.getOrNull(0)
|
||||
val lastlon = hauk_response.points.getOrNull(hauk_response.points.size - 2)?.getOrNull(1)
|
||||
val newspeed =
|
||||
if (lastlat != null && lastlon != null) {
|
||||
var fulldistance: Double = 0.0
|
||||
for (i in 1 until hauk_response.points.size -1) {
|
||||
try{
|
||||
fulldistance += haversineDistance(hauk_response.points[i-1][0]!!, hauk_response.points[i-1][1]!!, hauk_response.points[i][0]!!, hauk_response.points[i][1]!!)
|
||||
} catch (e: Exception) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
(fulldistance / (hauk_response.interval * hauk_response.points.size)*3600)
|
||||
} else {
|
||||
0.0
|
||||
}
|
||||
HaukMainHandler.post {
|
||||
try {
|
||||
mapState.moveMarker("target_position", x = longitudeToXNormalized(lon), y = latitudeToYNormalized(lat))
|
||||
target_speed = "${"%.1f".format(newspeed)}km/h"
|
||||
} catch (e: Exception) {
|
||||
// Marker might not exist yet, ignore
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user