Des tuiles vectorielles dynamiques depuis PostGIS.

Collez l'URL d'une base de données et obtenez une URL de tuiles vectorielles dynamiques, mise à jour quelques secondes après chaque modification de ligne. Transformez ensuite ces mêmes polygones en zones de géorepérage qui vous signalent l'arrivée des personnes.

Sandbox gratuite, sans carte bancaire. Compatible avec RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge ou votre propre serveur.

14/8235/5419 et 14/8236/5419 régénérées en 0,9 s. Les 22 autres tuiles n'ont pas bougé.

De la chaîne de connexion à la carte en trois étapes

  1. Collez l'URL de votre base

    Nous vérifions la connexion, la version de PostGIS et les permissions, et nous vous prévenons si l'URL passe par un pooler incapable de transmettre les mises à jour en direct.

  2. Choisissez tables et colonnes

    Chaque table dotée d'une colonne géométrique est listée avec son SRID, son estimation de lignes et ses colonnes. Choisissez les propriétés à inclure dans les tuiles et la plage de zoom.

  3. Collez l'URL des tuiles dans votre carte

    Vous obtenez une URL TileJSON et un modèle z/x/y avec une clé publique, limitée aux origines que vous autorisez. Elle fonctionne partout où les tuiles vectorielles fonctionnent.

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 },
    }],
  },
});

Les modifications arrivent sur la carte sans reconstruction

MapSocket écoute votre base avec LISTEN/NOTIFY de Postgres. Quand une ligne change, seules les tuiles qui contenaient son ancienne ou sa nouvelle forme sont réécrites. Une modification de mille lignes ne régénère chaque tuile concernée qu'une seule fois.

  1. Ligne validée

    INSERT, UPDATE ou DELETE sur une table publiée

  2. Le trigger envoie NOTIFY

    Couche, id de ligne, opération et anciennes limites

  3. Regroupé

    Les rafales sont lissées et dédupliquées par tuile

  4. Tuiles réencodées

    Seules les tuiles touchant l'ancienne ou la nouvelle géométrie, à chaque zoom

  5. Votre carte se rafraîchit

    update_complete arrive via SSE ; les webhooks sont aussi déclenchés

Deux façons de rester à jour

Direct
Le tableau de bord génère un trigger pour chaque table, avec vos vraies colonnes d'id et de géométrie. Vous l'exécutez une fois ; les mises à jour arrivent en une à trois secondes. Nécessite une connexion directe, pas un pooler en mode transaction.
Snapshot
Pour les rôles en lecture seule, les URL poolées ou les bases où vous ne pouvez pas ajouter de triggers. Nous reconstruisons selon un planning, de toutes les 5 minutes à une fois par semaine. Passez au direct quand vous êtes prêt.
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()}`]);
});

Du geofencing sur les mêmes données

Envoyez une position, recevez les zones de géorepérage qui la contiennent et ce qui a changé depuis la précédente. Les événements d'entrée, de sortie et de présence, les visites de lieux, les changements de pays et de région et les arrivées de trajets sont envoyés à vos webhooks, signés pour que vous puissiez vous y fier.

D'où viennent les zones de géorepérage

  • Synchronisées depuis une table PostGIS. Pointez vers public.delivery_zones, choisissez les colonnes d'id et de tag, et les polygones restent alignés sur la table. Les points et les lignes peuvent être transformés en zones par un tampon.
  • Dessinées dans le tableau de bord. Cercles et polygones sur la carte, avec une durée de présence par zone.
  • Créées via l'API. Upsert par tag et externalId, ou import de GeoJSON ou d'un CSV au format Radar.
POST /v1/track
Une position en entrée, des événements de géorepérage en sortie
GET /v1/context
Quelles zones contiennent un point, sans conserver d'état
GET /v1/search/geofences
Zones les plus proches par distance et par tag
POST /v1/trips
ETA, approche et arrivée pour les livraisons et les retraits

Chaque suivi indique aussi le lieu (depuis OpenStreetMap), le pays et la région, et détecte la fraude par sauts impossibles et positions simulées. Les clés publiques peuvent suivre depuis les navigateurs et les téléphones ; les clés secrètes gèrent les zones et lisent les événements. Les positions peu précises sont enregistrées mais ne déclenchent pas d'événement.

Requête
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}'
Réponse
{
  "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"
  }]
}

Chaque événement est aussi envoyé à vos webhooks avec un en-tête MapSocket-Signature (HMAC-SHA256). Vérifier une signature

Comparaison

Si vous devez générer des tuiles à chaque requête à partir de fonctions SQL paramétrées, pg_tileserv ou Martin conviennent mieux. MapSocket est fait pour les tables qui changent dans la journée et les cartes qui doivent suivre.

Approche Comment les tuiles sont produites Quand une ligne change Ce que vous exploitez
pg_tileserv Une requête SQL par demande de tuile, à la volée Visible à la requête suivante, mais chaque requête sollicite votre base Un serveur à côté de votre base
Martin À la volée depuis PostGIS, ou depuis des fichiers MBTiles et PMTiles En direct en mode dynamique, au prix des requêtes ; les fichiers doivent être reconstruits Un serveur, plus votre propre cache devant
Tippecanoe via cron Une reconstruction complète en MBTiles ou PMTiles Attendre la prochaine exécution, qui reconstruit tout Un planificateur, du stockage et un CDN
MapSocket Des MBTiles préconstruits, servis depuis le cache Seules les tuiles concernées sont régénérées, en quelques secondes Rien. Collez une URL.

Votre base, vos règles

Vous nous confiez une chaîne de connexion : voici exactement ce que nous en faisons.

De quel accès MapSocket a-t-il besoin sur ma base ?

Un rôle capable de faire un SELECT sur les tables que vous publiez. Nous recommandons un rôle dédié en lecture seule ; le tableau de bord vous donne les instructions CREATE ROLE et GRANT exactes. Pour les mises à jour en direct, c'est vous (pas nous) qui exécutez une petite fonction trigger sur chaque table, ce qui nécessite une seule fois les droits de propriétaire de la table.

Comment ma chaîne de connexion est-elle stockée ?

Chiffrée en AES-256-GCM avant d'atteindre notre base, avec une clé conservée en dehors de celle-ci. Elle n'est déchiffrée que dans le worker qui construit vos tuiles, et n'est plus jamais affichée dans le tableau de bord ni dans l'API : seuls l'hôte, la base et l'utilisateur le sont.

Puis-je mettre vos IP sur liste blanche ?

Oui. Toutes les connexions à votre base proviennent d'un ensemble fixe d'IP de sortie par région, indiquées dans le tableau de bord à côté de chaque connexion. Ajoutez-les à votre groupe de sécurité ou à pg_hba.conf, et rien d'autre n'a besoin d'être ouvert.

La connexion est-elle chiffrée ?

Nous nous connectons avec sslmode=require par défaut et refusons les connexions en clair, sauf si vous le désactivez explicitement pour un réseau privé.

Copiez-vous mes tables ?

Non. Les lignes sont lues et encodées directement en tuiles vectorielles ; l'archive de tuiles (MBTiles) est la seule copie que nous conservons. Supprimez une source et ses tuiles sont supprimées avec elle. Les zones de géorepérage synchronisées depuis une table sont stockées sous forme de géométries accompagnées des colonnes que vous choisissez.

Puis-je protéger mon compte avec l'authentification à deux facteurs ?

Oui. Activez-la dans Paramètres et sécurité : scannez un QR code avec n'importe quelle application d'authentification (Google Authenticator, 1Password, Authy, Microsoft Authenticator) ; la connexion demandera ensuite un code à 6 chiffres en plus de votre mot de passe. Vous recevez dix codes de récupération à usage unique au cas où vous perdriez votre téléphone.

Tarifs

Payez pour les sources que vous exploitez et les requêtes que vous servez. Votre base reste la vôtre ; nous ne facturons jamais à la ligne.

Sandbox

Pour essayer sur un projet perso

$0 / mois

  • 1 base de données, 1 source de tuiles
  • Reconstruction toutes les 24 heures
  • 50 000 requêtes de tuiles / mois
  • 100 zones de géorepérage, 100 utilisateurs suivis
Commencer gratuitement

Starter

Pour un produit qui contient une carte

$29 / mois

  • Mises à jour en direct via LISTEN/NOTIFY
  • 5 sources de tuiles, 2 bases de données
  • 1 M de requêtes de tuiles / mois
  • 5 000 zones de géorepérage, 5 000 utilisateurs suivis
  • Webhooks
  • Téléchargement MBTiles
Choisir Starter

Pro

Pour les équipes dont les données bougent toute la journée

$149 / mois

  • Tout ce qu'inclut Starter
  • 25 sources, 10 bases de données
  • 10 M de requêtes de tuiles / mois
  • Zones de géorepérage synchronisées depuis PostGIS
  • Domaine de tuiles personnalisé
  • Export PMTiles pour l'hébergement statique
Choisir Pro

Enterprise

Workers dédiés, dans votre cloud ou le nôtre

Parlons-en

  • Workers tilefeed dédiés
  • VPC peering / PrivateLink
  • SSO et journal d'audit
  • SLA de disponibilité de 99,95 %
Nous contacter
Comparaison des limites des offres
Limite SandboxStarterProEnterprise
Sources de tuiles 1525Illimité
Bases de données 1210Illimité
Requêtes de tuiles 50k / mois1M / mois10M / moisSur mesure
Zones de géorepérage 1005 000100 000Illimité
Utilisateurs suivis 100 / mois5k / mois50k / moisSur mesure
Cartes géoréférencées 110100Sur mesure
Mises à jour Reconstruction toutes les 24 heuresEn direct, quelques secondes après une écritureEn direct, quelques secondes après une écritureEn direct, quelques secondes après une écriture
Domaine de tuiles personnalisé NonNonOuiOui

Si vous dépassez votre limite de tuiles sur une offre payante, les tuiles continuent d'être servies ; nous vous écrivons avant que quoi que ce soit ne change. La Sandbox se met en pause à sa limite.

Questions

Est-ce compatible avec Supabase, Neon, RDS ou Cloud SQL ?

Oui, avec une réserve : les mises à jour en direct utilisent LISTEN de Postgres, qui ne fonctionne pas à travers les poolers en mode transaction. Utilisez la chaîne de connexion directe (port 5432 sur Supabase, l'hôte non poolé sur Neon). Si vous ne pouvez utiliser qu'une URL poolée, choisissez le mode snapshot et nous reconstruirons selon un planning.

Quelle est la rapidité des mises à jour en direct ?

En général une à trois secondes entre le COMMIT et une tuile à jour. Les notifications sont regroupées en petits lots, si bien qu'une modification en masse de 10 000 lignes régénère chaque tuile concernée une seule fois au lieu de 10 000.

Quelles bibliothèques cartographiques peuvent utiliser les tuiles ?

Tout ce qui lit les Mapbox Vector Tiles et TileJSON : MapLibre GL, Mapbox GL, OpenLayers, Leaflet avec un plugin de tuiles vectorielles, deck.gl, QGIS.

Puis-je partir et l'exploiter moi-même ?

Oui. MapSocket fait tourner tilefeed, sous licence MIT. Chaque source dispose d'un bouton Export config qui vous fournit le TOML tilefeed, et vous pouvez télécharger les MBTiles ou une archive PMTiles à tout moment.

Qu'est-ce qui compte comme utilisateur suivi ?

Un userId distinct ayant envoyé au moins un appel /v1/track dans le mois. Les appels à /v1/context et la recherche de zones de géorepérage ne sont pas comptés.

Pointez-le vers une table que vous avez déjà.

La plupart des gens obtiennent une URL de tuiles en direct dans les cinq minutes suivant l'inscription.