Custom icons, improved GPS, history layout, address fixes

- Replace placeholder SVG icons with custom PNG icons (80x80 padded)
- AffineTransform for pixel-perfect icon centering in menu ring
- Colored circles behind icons with icon drawn at 60% size
- GPS: always wait full timeout (30s), keep best quality fix
- History: show address, PLZ+city, coordinates on separate lines
- Geocoding: fall back to "name" field for street-level results,
  include PLZ+city in cached address data
- Address distance threshold raised to 70m

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
EiSiMo 2026-04-13 19:05:17 +02:00
parent 79cdb9f210
commit 216d40c2c5
18 changed files with 108 additions and 101 deletions

View file

@ -10,6 +10,7 @@ class Event {
public var lon as Float or Null;
public var accuracy as Float or Null;
public var address as String or Null;
public var zip as String or Null;
function initialize(type as String, timestamp as Number,
lat as Float or Null, lon as Float or Null,
@ -20,6 +21,7 @@ class Event {
self.lon = lon;
self.accuracy = accuracy;
self.address = null;
self.zip = null;
}
function toDict() as Dictionary {
@ -30,9 +32,8 @@ class Event {
"lon" => lon,
"acc" => accuracy
};
if (address != null) {
d["addr"] = address;
}
if (address != null) { d["addr"] = address; }
if (zip != null) { d["zip"] = zip; }
return d;
}
@ -44,9 +45,8 @@ class Event {
d["lon"] as Float or Null,
d["acc"] as Float or Null
);
if (d.hasKey("addr")) {
evt.address = d["addr"] as String or Null;
}
if (d.hasKey("addr")) { evt.address = d["addr"] as String or Null; }
if (d.hasKey("zip")) { evt.zip = d["zip"] as String or Null; }
return evt;
}
}