diff --git a/docs/ADMIN.md b/docs/ADMIN.md index f7ce6a6..190a3db 100644 --- a/docs/ADMIN.md +++ b/docs/ADMIN.md @@ -237,7 +237,7 @@ docker compose logs -f tileserver # Raster-Rendering - Image: `192.168.178.6:8083/cschulz/rd13_tile_server-marker-api:latest` (Forgejo Registry) - API Root: `http://localhost:9984` - Endpunkt: `/styles/v4/marker/{type}+{hexcolor}(@{scale}x).png` -- Typen: `pin-s` (24px), `pin-m` (32px), `pin-l` (40px); Canvas quadratisch, 80% opak +- Typen: `pin-s` (24px), `pin-m` (32px), `pin-l` (40px); Canvas quadratisch, 80% opak, schlanke Teardrop-Form (r/d≈0.35) - Image neu bauen: `docker compose build marker-api && docker compose up -d marker-api` - CI: Forgejo baut + pusht automatisch bei Änderungen in `services/marker-api/` diff --git a/docs/history/prompts/2026-07-01_marker-api_session.md b/docs/history/prompts/2026-07-01_marker-api_session.md index d88d314..22ce037 100644 --- a/docs/history/prompts/2026-07-01_marker-api_session.md +++ b/docs/history/prompts/2026-07-01_marker-api_session.md @@ -110,9 +110,12 @@ Geometry-Fix: r=35.5% der Breite, tipY=97.5%, Spitze passt jetzt sauber in die C ### Prompt 12 «Aber ich will doch das es in media wiki gut aussieht also muss es in 32x32 passen und gut aussehen. wäre es auch möglich ihn etwas durchsichtig zu machen?» -### Antwort 12 -Zurück auf quadratische Canvas (pin-m=32×32 @1x, 64×64 @2x) mit optimierter Geometrie: -- `r=35.5%` der Breite (statt 29%) → Kreis füllt Canvas besser aus -- `tipY=97.5%` → Spitze immer noch vollständig sichtbar -- 80% Transparenz: `fill.A=204`, `white.A=220` -- Verifiziert: `pin-m@2x = 64×64px PNG` +### Prompt 13 +«Das sieht aber immer noch komisch aus...» + +### Antwort 13 +Ursache identifiziert: `r/d = 0.59` (Kreisradius / Abstand zur Spitze) → Öffnungswinkel 36° → Tangenten laufen flach aus → Form sieht aus wie ein Oval. + +Fix: `r = size * 0.24` (statt 0.355) → `r/d ≈ 0.35` → Öffnungswinkel 20° → schlanker Pin. + +Verifiziert mit blauen Test-Pin (±4285F4): sieht jetzt aus wie Google-Maps-Pin. diff --git a/docs/history/summary/PROJECT_CONTEXT.md b/docs/history/summary/PROJECT_CONTEXT.md index cbbf56c..353e66e 100644 --- a/docs/history/summary/PROJECT_CONTEXT.md +++ b/docs/history/summary/PROJECT_CONTEXT.md @@ -1,6 +1,6 @@ # PROJECT_CONTEXT – rd13_tile_server -**Letzte Aktualisierung:** 2026-07-01 – ✅ **Marker-API**: Go-Service für Maptiler-kompatible Marker-Endpunkte (`/styles/v4/marker/*`) hinzugefügt. 32×32px Canvas, 80% Transparenz, Google-Maps-Teardrop-Form. Forgejo CI baut + pusht Image in lokale Container-Registry. +**Letzte Aktualisierung:** 2026-07-01 – ✅ **Marker-API**: Go-Service für Maptiler-kompatible Marker-Endpunkte (`/styles/v4/marker/*`). 32×32px Canvas, schlanker Teardrop-Pin (`r/d≈0.35`, Öffnungswinkel 20°), 80% Transparenz. Forgejo CI baut + pusht Image in lokale Container-Registry. --- diff --git a/services/marker-api/main.go b/services/marker-api/main.go index 49f6a6c..e1b068d 100644 --- a/services/marker-api/main.go +++ b/services/marker-api/main.go @@ -156,14 +156,14 @@ func generateMarker(pinType, hexColor string, scale float64) ([]byte, error) { size = 12 } - // Geometrie: Teardrop in quadratische Canvas einpassen - // Kreis füllt obere 3/4, Spitze landet am unteren Rand + // Geometrie: schlanker Google-Maps-Pin + // r/d ≈ 0.35 → Öffnungswinkel ~20° → Pin sieht spitz aus, nicht oval cx := size / 2 - r := size * 0.355 // Kreisradius (rechts/links je 1px Puffer für Rand) - cy := r + size*0.02 // Kreismittelpunkt Y (kleiner oberer Rand) - tipY := size * 0.975 // Spitze Y (knapp vor unterem Rand) - borderW := math.Max(1.2, size*0.045) // Randbreite - innerR := r * 0.36 // weißer Innenpunkt + r := size * 0.24 // kleiner Kreis → langer, schlanker Schwanz + cy := r + size*0.02 // Kreismittelpunkt oben + tipY := size * 0.975 // Spitze am unteren Rand + borderW := math.Max(1.5, size*0.05) // Randbreite + innerR := r * 0.40 // weißer Innenpunkt (etwas größer für Sichtbarkeit) // Transparenz: 80% opak (Alpha 204) fillBase := hexToColor(hexColor)