Communitygithub.com

YepAPI/Fähigkeiten

Integration von Mapbox/Leaflet, Geokodierung, Standortsuche, Marker-Clustering und Routendarstellung.

Was ist Fähigkeiten?

Diese Fähigkeit (Skill) bietet eine umfassende Anleitung zur Integration von Karten- und Geolokalisierungsfunktionen in moderne Webanwendungen, mit Fokus auf React-basierte Projekte. Sie behandelt sowohl die Nutzung von Mapbox GL JS (über die React-Wrapper-Bibliothek `react-map-gl`) als auch die kostenfreie Alternative Leaflet (`react-leaflet`). Die Anleitung umfasst essenzielle Praktiken für die API-Schlüsselverwaltung (z.B. `NEXT_PUBLIC_MAPBOX_TOKEN`), Geokodierung mittels Mapbox Geocoding API oder OpenStreetMap Nominatim, effizientes Marker-Clustering mit `supercluster` für große Datenmengen, das Erstellen einer Standortsuche (Store Locator) mit der Haversine-Formel, Routendarstellung mit der Mapbox Directions API sowie die browserbasierte Geolokalisierung. Zudem wird auf wichtige Fallstricke hingewiesen, etwa das serverseitige Rendern von Kartenkomponenten (immer mit `ssr: false` laden), das Rendern tausender Marker ohne Clustering und die fehlende Fehlerbehandlung bei verwehrter Geolokalisierung. Die Fähigkeit wird durch konkrete Codebeispiele in TypeScript und React untermauert und richtet sich an Entwickler, die robuste, performante und benutzerfreundliche Kartenfunktionen in ihre Web-Apps integrieren möchten. Sie ist für alle gängigen KI-Agenten-Plattformen wie Claude Code, Cursor und Codex geeignet, da sie plattformunabhängige Best Practices und Code-Snippets bereitstellt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/maps-geolocation

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Karten & Geodaten

Regeln

  • Mapbox GL JS für interaktive Karten – react-map-gl als React-Wrapper
  • Leaflet als kostenlose Alternative – react-leaflet für React, kein API-Schlüssel für Basiskarten nötig
  • API-Schlüssel-Verwaltung: NEXT_PUBLIC_MAPBOX_TOKEN für clientseitiges Mapbox, niemals serverseitige Geheimnisse preisgeben
  • Geokodierung: Adressen in Koordinaten umwandeln – Mapbox Geocoding API oder OpenStreetMap Nominatim (kostenlos)
  • Marker-Clustering: supercluster oder Mapbox-eigenes Clustering für große Markerdatensätze (100+) verwenden
  • Standortsuche (Store Locator): Benutzerstandort geokodieren → nahegelegene Standorte mit Haversine/PostGIS abfragen → auf Karte anzeigen
  • Routendarstellung: Mapbox Directions API für Auto-/Fußwege, als GeoJSON LineString-Layer rendern
  • Browser-Geolokalisierung: navigator.geolocation.getCurrentPosition() – stets freundlich mit verweigerter Berechtigung umgehen
  • Kartenkomponente lazy laden – Karten sind schwer; dynamic(() => import("./Map"), { ssr: false }) verwenden

Muster

// react-map-gl mit Mapbox
import Map, { Marker, NavigationControl } from "react-map-gl";
import "mapbox-gl/dist/mapbox-gl.css";

function StoreMap({ stores }: { stores: Store[] }) {
  return (
    <Map
      initialViewState={{ longitude: -122.4, latitude: 37.8, zoom: 11 }}
      mapboxAccessToken={process.env.NEXT_PUBLIC_MAPBOX_TOKEN}
      mapStyle="mapbox://styles/mapbox/streets-v12"
      style={{ width: "100%", height: 400 }}
    >
      <NavigationControl position="top-right" />
      {stores.map((store) => (
        <Marker key={store.id} longitude={store.lng} latitude={store.lat}>
          <Pin />
        </Marker>
      ))}
    </Map>
  );
}
// Haversine-Distanz für die Suche in der Nähe
function haversineDistance(lat1: number, lon1: number, lat2: number, lon2: number): number {
  const R = 6371; // km
  const dLat = ((lat2 - lat1) * Math.PI) / 180;
  const dLon = ((lon2 - lon1) * Math.PI) / 180;
  const a = Math.sin(dLat / 2) ** 2 + Math.cos((lat1 * Math.PI) / 180) * Math.cos((lat2 * Math.PI) / 180) * Math.sin(dLon / 2) ** 2;
  return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
}

Vermeiden

  • Serverseitiges Rendern von Kartenkomponenten – immer mit ssr: false oder "use client" laden
  • 1000+ Marker ohne Clustering rendern – Performance-Einbußen; supercluster verwenden
  • Koordinaten hartcodieren – Adressen zur Build-Zeit oder bei Bedarf geokodieren
  • Verweigerte Geolokalisierungsberechtigung ignorieren – immer einen Fallback bereitstellen (manuelle Adresseingabe)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Verwandte Skills