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
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é. 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.
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.
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.
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 },
}],
},
}); 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.
INSERT, UPDATE ou DELETE sur une table publiée
Couche, id de ligne, opération et anciennes limites
Les rafales sont lissées et dédupliquées par tuile
Seules les tuiles touchant l'ancienne ou la nouvelle géométrie, à chaque zoom
update_complete arrive via SSE ; les webhooks sont aussi déclenchés
-- 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'); 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()}`]);
}); 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.
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. tag et externalId, ou import de GeoJSON ou d'un CSV au format Radar. POST /v1/trackGET /v1/contextGET /v1/search/geofencesPOST /v1/tripsChaque 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.
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}' {
"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
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. |
Vous nous confiez une chaîne de connexion : voici exactement ce que nous en faisons.
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.
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.
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.
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é.
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.
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.
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.
Pour essayer sur un projet perso
$0 / mois
Pour un produit qui contient une carte
$29 / mois
Pour les équipes dont les données bougent toute la journée
$149 / mois
Workers dédiés, dans votre cloud ou le nôtre
Parlons-en
| Limite | Sandbox | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Sources de tuiles | 1 | 5 | 25 | Illimité |
| Bases de données | 1 | 2 | 10 | Illimité |
| Requêtes de tuiles | 50k / mois | 1M / mois | 10M / mois | Sur mesure |
| Zones de géorepérage | 100 | 5 000 | 100 000 | Illimité |
| Utilisateurs suivis | 100 / mois | 5k / mois | 50k / mois | Sur mesure |
| Cartes géoréférencées | 1 | 10 | 100 | Sur mesure |
| Mises à jour | Reconstruction toutes les 24 heures | En direct, quelques secondes après une écriture | En direct, quelques secondes après une écriture | En direct, quelques secondes après une écriture |
| Domaine de tuiles personnalisé | Non | Non | Oui | Oui |
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.
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.
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.
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.
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.
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.
La plupart des gens obtiennent une URL de tuiles en direct dans les cinq minutes suivant l'inscription.