From f12e64422cc6157bf8dbcec272f4dd1f6e74b4f9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 20 May 2026 23:47:23 +0000 Subject: Fix invisible speed-colored track: use step() with hex string literals Expression.color(Color.parseColor()) inside interpolate() stops was silently failing to render on device. Replace with Expression.step() and Expression.literal(hexString) which MapLibre's renderer handles natively for line-color. https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn --- .../src/main/kotlin/org/terst/nav/track/TrackColors.kt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'android-app') diff --git a/android-app/app/src/main/kotlin/org/terst/nav/track/TrackColors.kt b/android-app/app/src/main/kotlin/org/terst/nav/track/TrackColors.kt index 3bcabb1..145a4dd 100644 --- a/android-app/app/src/main/kotlin/org/terst/nav/track/TrackColors.kt +++ b/android-app/app/src/main/kotlin/org/terst/nav/track/TrackColors.kt @@ -1,10 +1,7 @@ package org.terst.nav.track -import android.graphics.Color import org.maplibre.android.style.expressions.Expression -import org.maplibre.android.style.layers.PropertyFactory import org.maplibre.geojson.Feature -import org.maplibre.geojson.FeatureCollection import org.maplibre.geojson.LineString import org.maplibre.geojson.Point @@ -21,15 +18,14 @@ fun speedSegments(points: List): List = } /** - * MapLibre expression that interpolates line-color from the "speed" feature property. + * MapLibre expression that step-interpolates line-color from the "speed" feature property. * Scale: 0 kt → blue · 4 kt → cyan · 7 kt → green · 10 kt → amber · 13+ kt → red. */ -fun speedColorExpression(): Expression = Expression.interpolate( - Expression.linear(), +fun speedColorExpression(): Expression = Expression.step( Expression.get("speed"), - Expression.stop(0, Expression.color(Color.parseColor("#2196F3"))), // blue - Expression.stop(4, Expression.color(Color.parseColor("#00BCD4"))), // cyan - Expression.stop(7, Expression.color(Color.parseColor("#4CAF50"))), // green - Expression.stop(10, Expression.color(Color.parseColor("#FFC107"))), // amber - Expression.stop(13, Expression.color(Color.parseColor("#F44336"))) // red + Expression.literal("#2196F3"), // < 4 kt: blue + Expression.stop(4, Expression.literal("#00BCD4")), // cyan + Expression.stop(7, Expression.literal("#4CAF50")), // green + Expression.stop(10, Expression.literal("#FFC107")), // amber + Expression.stop(13, Expression.literal("#F44336")) // red ) -- cgit v1.2.3