Quick Start Guide
📋 Übersicht
Diese Anleitung zeigt dir in 5 Schritten, wie du ein funktionierendes Wayfinding-System für dein Shopping Center einrichtest.
✅ Schritt 1: SVG-Grundriss vorbereiten
Option A: Beispiel-SVG verwenden
# Kopiere ein Beispiel-SVG
cp docs/wayfinding/examples/example-mall-single-floor.svg my-mall.svg
Option B: Eigenes SVG erstellen
- Öffne Adobe Illustrator, Inkscape oder Figma
- Erstelle Layer mit folgenden IDs:
shops(für Shopflächen)services(für Services wie WC, Info)facilities(für Aufzüge, Treppen)entrances(für Eingänge)
- Benenne jedes Element eindeutig (z.B.
shop-1,service-info) - Füge
data-nameAttribute hinzu für Namen - Exportiere als SVG
Detaillierte Anleitung: SVG-ANLEITUNG.md
✅ Schritt 2: SVG hochladen
Im Dashboard:
1. Gehe zu: Dashboard → Wayfinding → SVG-Karte erstellen
2. Klicke auf "SVG hochladen" oder ziehe Datei per Drag & Drop
3. Warte auf automatische Analyse
4. Prüfe erkannte Elemente in der Vorschau
Was passiert:
- ✅ System analysiert SVG-Struktur
- ✅ Extrahiert Shops, Services, Facilities
- ✅ Zeigt Vorschau mit allen erkannten Elementen
- ✅ Erstellt MapFloor-Eintrag in Datenbank
Erwartetes Ergebnis:
✅ 6 Shops erkannt
✅ 4 Services erkannt
✅ 4 Facilities erkannt
✅ 3 Eingänge erkannt
✅ 5 Waypoints erkannt
✅ Schritt 3: Floor in Datenbank anlegen
Automatisch (empfohlen):
Der SVG-Upload erstellt automatisch einen MapFloor-Eintrag.
Manuell (falls nötig):
// API-Call
POST /api/wayfinding/floors
{
"centerId": "center-uuid",
"floorNumber": 0,
"name": "Erdgeschoss",
"mapImage": "/uploads/wayfinding/svg/my-mall.svg",
"mapSvg": "<svg>...</svg>",
"isDefault": true
}
Prüfen:
Dashboard → Wayfinding → Übersicht
→ Sollte neuen Floor anzeigen
✅ Schritt 4: Shops & Services mappen
Im Dashboard:
1. Gehe zu: Dashboard → Wayfinding → Karten-Mapping
2. Wähle Center aus (oben rechts)
3. Wähle Floor aus (Tabs)
4. Siehst du:
- Links: Unmapped Shops/Services
- Rechts: Interaktive SVG-Karte
Mapping durchführen:
1. Wähle Shop aus der Liste (links)
2. Ziehe Shop per Drag & Drop auf Karte (rechts)
3. Lasse Maus los → Shop wird platziert
4. Wiederhole für alle Shops/Services
Tipps:
- 🔍 Zoom: Mausrad oder Zoom-Buttons
- 🖱️ Pan: Linke Maustaste gedrückt halten + ziehen
- 🗑️ Löschen: Klick auf gemappten Shop → Trash-Icon
- 💾 Auto-Save: Mappings werden automatisch gespeichert
✅ Schritt 5: Testen & Verifizieren
1. Mapping-Status prüfen:
Dashboard → Wayfinding → Karten-Mapping
→ Statistik oben: "X von Y Shops gemappt"
2. 3D-Vorschau testen:
Dashboard → Wayfinding → Übersicht
→ Klick auf Floor-Karte
→ 3D-Viewer sollte sich öffnen
3. API testen:
# Alle Floors abrufen
curl http://localhost:3000/api/wayfinding/floors?centerId=YOUR_CENTER_ID
# Alle MapLocations abrufen
curl http://localhost:3000/api/wayfinding/locations?floorId=YOUR_FLOOR_ID
4. Frontend testen:
Frontend-App → Center-Website → Centerplan
→ Sollte interaktive Karte anzeigen
🎯 Erwartetes Endergebnis
Nach Abschluss aller Schritte solltest du haben:
Datenbank:
- ✅ MapFloor-Eintrag mit SVG
- ✅ MapLocation-Einträge für jeden Shop/Service
- ✅ Koordinaten (x, y) für jede Location
Dashboard:
- ✅ SVG-Karte sichtbar in Mapping-Interface
- ✅ Alle Shops/Services gemappt
- ✅ 3D-Vorschau funktioniert
Frontend:
- ✅ Interaktive Karte auf Center-Website
- ✅ Shops klickbar
- ✅ Navigation funktioniert
🐛 Troubleshooting
Problem: SVG wird nicht erkannt
Symptom: "Keine Shops gefunden"
Lösung:
- Prüfe Layer-IDs in SVG:
<g id="shops"> <!-- Muss "shops" oder "shop" enthalten -->
<rect id="shop-1" ... />
</g> - Prüfe Element-IDs: Müssen eindeutig sein
- Prüfe Größe: Min. 40x30px für Shops
Test:
# SVG-Struktur analysieren
cat my-mall.svg | grep -E 'id="(shop|service|facility)"'
Problem: Drag & Drop funktioniert nicht
Symptom: Shop lässt sich nicht auf Karte ziehen
Lösung:
- Prüfe Browser-Konsole auf Fehler
- Stelle sicher, dass Floor ausgewählt ist
- Prüfe, ob SVG geladen ist (rechte Seite)
- Versuche Browser-Refresh (Cmd+R / Ctrl+R)
Test:
// Browser-Konsole
console.log('Floor ID:', selectedFloorId);
console.log('SVG Content:', svgContent?.length);
Problem: Shops werden nicht gespeichert
Symptom: Nach Refresh sind Mappings weg
Lösung:
- Prüfe API-Response in Network-Tab
- Prüfe Datenbank:
SELECT * FROM "MapLocation" WHERE "floorId" = 'YOUR_FLOOR_ID'; - Prüfe Berechtigungen (User muss Center-Zugriff haben)
Test:
# API direkt testen
curl -X POST http://localhost:3000/api/shop-mapping \
-H "Content-Type: application/json" \
-d '{
"shopId": "shop-uuid",
"floorId": "floor-uuid",
"coordinates": {"x": 100, "y": 200}
}'
Problem: Multi-Floor funktioniert nicht
Symptom: Nur ein Floor wird erkannt
Lösung:
- Prüfe SVG-Struktur:
<g id="floor-eg"> <!-- Muss "floor" enthalten -->
<g id="shops-floor-eg">
<rect id="shop-eg-1" ... />
</g>
</g> - Jeder Floor braucht eigene Gruppe
- Shops müssen innerhalb der Floor-Gruppe sein
Test:
# Floor-Gruppen finden
cat my-mall.svg | grep -E 'id="floor-'
📚 Weitere Ressourcen
- SVG-Anleitung: SVG-ANLEITUNG.md
- Beispiel-SVGs: examples/
- API-Dokumentation: ../api/wayfinding.md
- Datenbank-Schema: ../../packages/database/schema.prisma
🎓 Nächste Schritte
Nach dem Basic-Setup kannst du:
- Waypoints hinzufügen für Navigation
- 3D-Modelle hochladen (GLB/GLTF)
- Routen definieren zwischen Locations
- Digital Signage integrieren
- QR-Codes für Locations generieren
💡 Best Practices
SVG-Erstellung:
- ✅ Verwende sprechende IDs (
shop-aldistattrect-1) - ✅ Füge
data-nameAttribute hinzu - ✅ Halte Struktur konsistent über alle Floors
- ✅ Verwende Standard-Farben (siehe SVG-ANLEITUNG.md)
Mapping:
- ✅ Mappe zuerst große Shops (Anker-Mieter)
- ✅ Dann kleine Shops
- ✅ Zuletzt Services & Facilities
- ✅ Prüfe Mappings regelmäßig
Testing:
- ✅ Teste auf verschiedenen Browsern
- ✅ Teste Mobile-Ansicht
- ✅ Teste mit echten Shop-Daten
- ✅ Teste Navigation zwischen Floors
📞 Support
Bei Fragen oder Problemen:
- GitHub Issues: github.com/your-repo/issues
- Dokumentation: docs/wayfinding/
- Slack: #wayfinding-support