Dynamische Vektorkacheln aus PostGIS.

Fügen Sie eine Datenbank-URL ein und erhalten Sie eine dynamische Vektorkachel-URL, die sich Sekunden nach einer Zeilenänderung aktualisiert. Machen Sie aus denselben Polygonen Geofences, die Ihnen melden, wann Personen ankommen.

Kostenlose Sandbox, keine Kreditkarte. Funktioniert mit RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge oder Ihrem eigenen Server.

14/8235/5419 und 14/8236/5419 in 0,9 s neu gerendert. Die anderen 22 Kacheln blieben unverändert.

Vom Connection-String zur Karte in drei Schritten

  1. Datenbank-URL einfügen

    Wir prüfen Verbindung, PostGIS-Version und Berechtigungen und sagen Ihnen, ob die URL über einen Pooler läuft, der keine Live-Updates übertragen kann.

  2. Tabellen und Spalten wählen

    Jede Tabelle mit Geometriespalte erscheint mit SRID, geschätzter Zeilenzahl und Spalten. Wählen Sie die Eigenschaften, die in die Kacheln gehören, und den Zoombereich.

  3. Kachel-URL in Ihre Karte einfügen

    Sie erhalten eine TileJSON-URL und ein z/x/y-Template mit einem öffentlichen Schlüssel, beschränkt auf die von Ihnen erlaubten Origins. Funktioniert überall, wo Vektorkacheln funktionieren.

map.js
import maplibregl from "maplibre-gl";

const map = new maplibregl.Map({
  container: "map",
  style: {
    version: 8,
    sources: {
      parcels: {
        type: "vector",
        url: "https://tiles.mapsocket.com/t/acme/parcels.json?key=pk_live_…",
      },
    },
    layers: [{
      id: "parcels",
      type: "fill",
      source: "parcels",
      "source-layer": "parcels",
      paint: { "fill-color": "#2D6E9E", "fill-opacity": 0.3 },
    }],
  },
});

Änderungen erreichen die Karte ohne Neuaufbau

MapSocket hört Ihre Datenbank über Postgres LISTEN/NOTIFY ab. Ändert sich eine Zeile, werden nur die Kacheln neu geschrieben, die ihre alte oder neue Form enthielten. Eine Änderung an tausend Zeilen rendert jede betroffene Kachel genau einmal neu.

  1. Zeile committet

    INSERT, UPDATE oder DELETE auf einer veröffentlichten Tabelle

  2. Trigger sendet NOTIFY

    Layer, Zeilen-ID, Operation und die alten Grenzen

  3. Gebündelt

    Bursts werden pro Kachel entprellt und dedupliziert

  4. Kacheln neu kodiert

    Nur Kacheln, die die alte oder neue Geometrie berühren, auf jeder Zoomstufe

  5. Ihre Karte aktualisiert sich

    update_complete kommt per SSE; auch Webhooks werden ausgelöst

Zwei Wege, aktuell zu bleiben

Live
Das Dashboard erzeugt für jede Tabelle einen Trigger mit Ihren echten ID- und Geometriespalten. Sie führen ihn einmal aus; Updates kommen in ein bis drei Sekunden an. Erfordert eine direkte Verbindung, keinen Transaction-Pooler.
Snapshot
Für Read-only-Rollen, gepoolte URLs oder Datenbanken, in denen Sie keine Trigger anlegen können. Wir bauen nach Zeitplan neu, von alle 5 Minuten bis einmal pro Woche. Wechseln Sie zu Live, sobald Sie bereit sind.
trigger.sql
-- Generated for public.parcels; run once as the table owner
CREATE TRIGGER mapsocket_parcels
  AFTER INSERT OR UPDATE OR DELETE ON public.parcels
  FOR EACH ROW EXECUTE FUNCTION
    mapsocket_notify_tile_update('parcels', 'id', 'geom');
live-refresh.js
const tiles = "https://tiles.mapsocket.com/t/acme/parcels/{z}/{x}/{y}.pbf?key=pk_live_…";
const events = new EventSource("https://tiles.mapsocket.com/t/acme/parcels/events?key=pk_live_…");

// Sent after tilefeed rewrites the affected tiles
events.addEventListener("update_complete", (e) => {
  const { tiles_updated, affected_zooms } = JSON.parse(e.data);
  map.getSource("parcels").setTiles([`${tiles}&_t=${Date.now()}`]);
});

Geofencing auf denselben Daten

Senden Sie einen Standort und erhalten Sie die Geofences, in denen er liegt, und was sich seit dem letzten geändert hat. Enter-, Exit- und Dwell-Events, Ortsbesuche, Länder- und Bundeslandwechsel sowie Ankünfte von Fahrten gehen signiert an Ihre Webhooks, damit Sie ihnen vertrauen können.

Woher Geofences kommen

  • Synchronisiert aus einer PostGIS-Tabelle. Verweisen Sie auf public.delivery_zones, wählen Sie ID- und Tag-Spalten, und die Polygone bleiben mit der Tabelle synchron. Punkte und Linien lassen sich per Puffer zu Zonen erweitern.
  • Im Dashboard gezeichnet. Kreise und Polygone auf der Karte, mit einer Verweildauer pro Geofence.
  • Über die API angelegt. Upsert per tag und externalId, oder Import von GeoJSON bzw. einer CSV im Radar-Format.
POST /v1/track
Standort rein, Geofence-Events raus
GET /v1/context
Welche Geofences einen Punkt enthalten, ohne gespeicherten Zustand
GET /v1/search/geofences
Nächstgelegene Geofences nach Entfernung und Tag
POST /v1/trips
ETAs, Annäherung und Ankunft für Lieferungen und Abholungen

Jeder Track benennt außerdem den Ort (aus OpenStreetMap), das Land und das Bundesland und prüft auf Betrug durch unmögliche Sprünge und gefälschte Standorte. Öffentliche Schlüssel können aus Browsern und Smartphones tracken; geheime Schlüssel verwalten Geofences und lesen Events. Ungenaue Positionen werden gespeichert, lösen aber keine Events aus.

Anfrage
curl https://api.mapsocket.com/v1/track \
  -H "Authorization: pk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"userId":"driver-118","latitude":40.7411,"longitude":-73.9897,"accuracy":12}'
Antwort
{
  "user": {
    "userId": "driver-118",
    "geofenceIds": ["9c1e5a40-…"],
    "lastSeenAt": "2026-11-04T14:02:11Z"
  },
  "events": [{
    "type": "user.entered_geofence",
    "userId": "driver-118",
    "geofence": {
      "tag": "loading-bay",
      "externalId": "flatiron-02",
      "description": "Flatiron loading bay"
    },
    "confidence": 3,
    "createdAt": "2026-11-04T14:02:11Z"
  }]
}

Jedes Event geht zusätzlich an Ihre Webhooks, mit einem MapSocket-Signature-Header (HMAC-SHA256). Signatur prüfen

Im Vergleich

Wenn Sie Kacheln pro Anfrage aus parametrisierten SQL-Funktionen erzeugen müssen, sind pg_tileserv oder Martin die bessere Wahl. MapSocket ist für Tabellen, die sich im Lauf des Tages ändern, und Karten, die Schritt halten sollen.

Ansatz Wie Kacheln entstehen Wenn sich eine Zeile ändert Was Sie betreiben
pg_tileserv Eine SQL-Abfrage pro Kachelanfrage, on the fly Bei der nächsten Anfrage sichtbar, aber jede Anfrage trifft Ihre Datenbank Ein Server neben Ihrer Datenbank
Martin On the fly aus PostGIS oder aus MBTiles- und PMTiles-Dateien Live im dynamischen Modus, zu Abfragekosten; Dateien brauchen einen Neuaufbau Ein Server plus Ihr eigener Cache davor
Tippecanoe per Cronjob Ein vollständiger Neuaufbau zu MBTiles oder PMTiles Warten auf den nächsten Lauf, der alles neu baut Ein Scheduler, Speicher und ein CDN
MapSocket Vorgefertigte MBTiles, aus dem Cache ausgeliefert Nur die betroffenen Kacheln werden neu gerendert, in Sekunden Nichts. URL einfügen.

Ihre Datenbank, Ihre Regeln

Sie geben uns einen Connection-String, daher hier genau, was wir damit tun.

Welchen Zugriff auf meine Datenbank braucht MapSocket?

Eine Rolle, die die veröffentlichten Tabellen per SELECT lesen kann. Wir empfehlen eine eigene Read-only-Rolle; das Dashboard liefert Ihnen die genauen CREATE ROLE- und GRANT-Anweisungen. Für Live-Updates führen Sie (nicht wir) auf jeder Tabelle eine kleine Trigger-Funktion aus, wofür einmalig Eigentümerrechte an der Tabelle nötig sind.

Wie wird mein Connection-String gespeichert?

Mit AES-256-GCM verschlüsselt, bevor er unsere Datenbank erreicht, wobei der Schlüssel außerhalb davon liegt. Entschlüsselt wird er nur im Worker, der Ihre Kacheln erzeugt, und er wird im Dashboard oder in der API nie wieder angezeigt, nur Host, Datenbank und Benutzer.

Kann ich Ihre IPs auf eine Allowlist setzen?

Ja. Alle Verbindungen zu Ihrer Datenbank kommen von einer festen Gruppe von Egress-IPs pro Region, die im Dashboard neben jeder Verbindung aufgeführt sind. Tragen Sie sie in Ihre Security Group oder pg_hba.conf ein, und sonst muss nichts offen sein.

Ist die Verbindung verschlüsselt?

Wir verbinden uns standardmäßig mit sslmode=require und lehnen unverschlüsselte Verbindungen ab, sofern Sie das nicht ausdrücklich für ein privates Netzwerk abschalten.

Kopieren Sie meine Tabellen?

Nein. Zeilen werden gelesen und direkt in Vektorkacheln kodiert; das Kachelarchiv (MBTiles) ist die einzige Kopie, die wir behalten. Löschen Sie eine Quelle, werden ihre Kacheln mit gelöscht. Geofences, die Sie aus einer Tabelle synchronisieren, werden als Geometrien plus die von Ihnen gewählten Spalten gespeichert.

Kann ich mein Konto mit Zwei-Faktor-Authentifizierung schützen?

Ja. Aktivieren Sie sie unter Einstellungen und Sicherheit: Scannen Sie einen QR-Code mit einer beliebigen Authenticator-App (Google Authenticator, 1Password, Authy, Microsoft Authenticator), danach brauchen Sie zur Anmeldung zusätzlich zum Passwort einen 6-stelligen Code. Sie erhalten zehn einmalige Wiederherstellungscodes, falls Sie Ihr Smartphone verlieren.

Preise

Sie zahlen für die Quellen, die Sie betreiben, und die Anfragen, die Sie ausliefern. Ihre Datenbank bleibt Ihre; wir rechnen nie nach Zeilen ab.

Sandbox

Zum Ausprobieren an einem Nebenprojekt

$0 / Monat

  • 1 Datenbank, 1 Kachelquelle
  • Neuaufbau alle 24 Stunden
  • 50.000 Kachelanfragen / Monat
  • 100 Geofences, 100 getrackte Nutzer
Kostenlos starten

Starter

Für ein Produkt mit einer Karte darin

$29 / Monat

  • Live-Updates über LISTEN/NOTIFY
  • 5 Kachelquellen, 2 Datenbanken
  • 1 Mio. Kachelanfragen / Monat
  • 5.000 Geofences, 5.000 getrackte Nutzer
  • Webhooks
  • MBTiles-Download
Starter wählen

Pro

Für Teams, deren Daten sich den ganzen Tag bewegen

$149 / Monat

  • Alles aus Starter
  • 25 Quellen, 10 Datenbanken
  • 10 Mio. Kachelanfragen / Monat
  • Aus PostGIS synchronisierte Geofences
  • Eigene Kachel-Domain
  • PMTiles-Export für statisches Hosting
Pro wählen

Enterprise

Dedizierte Worker, in Ihrer oder unserer Cloud

Sprechen wir

  • Dedizierte tilefeed-Worker
  • VPC-Peering / PrivateLink
  • SSO und Audit-Log
  • 99,95 % Uptime-SLA
Kontakt aufnehmen
Tariflimits im Vergleich
Limit SandboxStarterProEnterprise
Kachelquellen 1525Unbegrenzt
Datenbanken 1210Unbegrenzt
Kachelanfragen 50k / Mon.1M / Mon.10M / Mon.Individuell
Geofences 1005.000100.000Unbegrenzt
Getrackte Nutzer 100 / Mon.5k / Mon.50k / Mon.Individuell
Georeferenzierte Karten 110100Individuell
Updates Neuaufbau alle 24 StundenLive, Sekunden nach einem SchreibvorgangLive, Sekunden nach einem SchreibvorgangLive, Sekunden nach einem Schreibvorgang
Eigene Kachel-Domain NeinNeinJaJa

Überschreiten Sie in einem bezahlten Tarif Ihr Kachellimit, werden weiter Kacheln ausgeliefert; wir informieren Sie per E-Mail, bevor sich etwas ändert. Die Sandbox pausiert bei Erreichen des Limits.

Fragen

Funktioniert es mit Supabase, Neon, RDS oder Cloud SQL?

Ja, mit einer Einschränkung: Live-Updates nutzen Postgres LISTEN, was über Pooler im Transaction-Modus nicht funktioniert. Verwenden Sie den direkten Connection-String (Port 5432 bei Supabase, den Host ohne Pooling bei Neon). Wenn Sie nur eine gepoolte URL nutzen können, wählen Sie den Snapshot-Modus, und wir bauen nach Zeitplan neu.

Wie schnell sind Live-Updates?

In der Regel ein bis drei Sekunden vom COMMIT bis zur frischen Kachel. Benachrichtigungen werden zu kleinen Batches entprellt, sodass eine Massenänderung an 10.000 Zeilen jede betroffene Kachel einmal neu rendert statt 10.000-mal.

Welche Kartenbibliotheken können die Kacheln nutzen?

Alles, was Mapbox Vector Tiles und TileJSON liest: MapLibre GL, Mapbox GL, OpenLayers, Leaflet mit einem Vector-Tile-Plugin, deck.gl, QGIS.

Kann ich wechseln und es selbst betreiben?

Ja. MapSocket betreibt tilefeed, das unter MIT-Lizenz steht. Jede Quelle hat einen Button Export config, der Ihnen die tilefeed-TOML liefert, und Sie können die MBTiles oder ein PMTiles-Archiv jederzeit herunterladen.

Was zählt als getrackter Nutzer?

Eine eindeutige userId, die im Monat mindestens einen /v1/track-Aufruf gesendet hat. Aufrufe von /v1/context und die Geofence-Suche zählen nicht dazu.

Richten Sie es auf eine Tabelle, die Sie schon haben.

Die meisten haben innerhalb von fünf Minuten nach der Registrierung eine Live-Kachel-URL.