Moar federation

This commit is contained in:
Tim Zöller 2025-12-03 20:33:09 +01:00
parent 889c5336bf
commit 09413bc7f3
2 changed files with 20 additions and 8 deletions

View file

@ -137,7 +137,8 @@ public class ActivityImageService {
// Draw track segments with privacy fade
g2d.setStroke(new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
final double FADE_DISTANCE = 300.0; // 300 meters fade zone
final double HIDDEN_DISTANCE = 100.0; // First/last 100m completely hidden
final double FADE_DISTANCE = 200.0; // Fade zone from 100m to 200m
for (int i = 0; i < trackPoints.size() - 1; i++) {
Map<String, Object> point1 = trackPoints.get(i);
@ -161,14 +162,25 @@ public class ActivityImageService {
// Calculate fade opacity (0.0 to 1.0)
float opacity = 1.0f;
if (distanceFromStart < FADE_DISTANCE) {
// Fade in from start
opacity = Math.min(opacity, (float) (distanceFromStart / FADE_DISTANCE));
// Hide first 100m completely, fade in from 100m to 200m
if (distanceFromStart < HIDDEN_DISTANCE) {
opacity = 0.0f;
} else if (distanceFromStart < FADE_DISTANCE) {
// Fade in from 100m to 200m
opacity = Math.min(opacity, (float) ((distanceFromStart - HIDDEN_DISTANCE) / (FADE_DISTANCE - HIDDEN_DISTANCE)));
}
if (distanceFromEnd < FADE_DISTANCE) {
// Fade out at end
opacity = Math.min(opacity, (float) (distanceFromEnd / FADE_DISTANCE));
// Hide last 100m completely, fade out from 200m to 100m before end
if (distanceFromEnd < HIDDEN_DISTANCE) {
opacity = 0.0f;
} else if (distanceFromEnd < FADE_DISTANCE) {
// Fade out from 200m to 100m before end
opacity = Math.min(opacity, (float) ((distanceFromEnd - HIDDEN_DISTANCE) / (FADE_DISTANCE - HIDDEN_DISTANCE)));
}
// Skip completely transparent segments
if (opacity <= 0.0f) {
continue;
}
// Apply opacity to track color

View file

@ -384,7 +384,7 @@
// Create map (needs to be done after container is visible)
setTimeout(() => {
const map = FitPub.createActivityMap('activityMap', geoJson, {
showStartEnd: true,
showStartEnd: false, // Privacy: Do not show start/end markers
fitBounds: true
});