Sandbox
Probeer het op een zijproject
$0 / maand
- 1 database, 1 tegelbron
- Rebuild elke 24 uur
- 50.000 tegelrequests / maand
- 100 geofences, 100 gevolgde gebruikers
Plak een database-URL en krijg een dynamische vectortegel-URL die seconden na een rijwijziging bijwerkt. Maak van dezelfde polygonen daarna geofences die je laten weten wanneer mensen aankomen.
Gratis sandbox, geen creditcard nodig. Werkt met RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge of je eigen server.
14/8235/5419 en 14/8236/5419 opnieuw gerenderd in 0,9 s. De andere 22 tegels bleven ongewijzigd. We controleren de verbinding, de PostGIS-versie en de rechten, en waarschuwen je als de URL via een pooler loopt die geen live updates kan doorgeven.
Elke tabel met een geometriekolom wordt getoond met SRID, geschat aantal rijen en kolommen. Kies welke eigenschappen in de tegels komen en het zoombereik.
Je krijgt een TileJSON-URL en een z/x/y-template met een publishable key, beperkt tot de origins die jij toestaat. Werkt overal waar vectortegels werken.
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 luistert naar je database met Postgres LISTEN/NOTIFY. Verandert er een rij, dan worden alleen de tegels herschreven waarin de oude of nieuwe vorm lag. Een bewerking van duizend rijen rendert elke geraakte tegel één keer opnieuw.
INSERT, UPDATE of DELETE op een gepubliceerde tabel
Laag, rij-id, operatie en de oude begrenzing
Pieken worden per tegel gedebounced en ontdubbeld
Alleen tegels die de oude of nieuwe geometrie raken, op elk zoomniveau
update_complete komt binnen via SSE; webhooks worden ook verstuurd
-- 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()}`]);
}); Stuur een locatie en krijg terug in welke geofences die ligt en wat er sinds de vorige is veranderd. Enter-, exit- en dwell-events, plaatsbezoeken, land- en provinciewissels en aankomsten van ritten gaan naar je webhooks, ondertekend zodat je ze kunt vertrouwen.
public.delivery_zones, kies de id- en tagkolommen, en de polygonen blijven gelijk met de tabel. Punten en lijnen kunnen met een buffer tot zones worden gemaakt. tag en externalId, of importeer GeoJSON of een CSV in Radar-formaat. POST /v1/trackGET /v1/contextGET /v1/search/geofencesPOST /v1/tripsElke track benoemt ook de plaats (uit OpenStreetMap), het land en de provincie, en controleert op fraude zoals onmogelijke sprongen en nagebootste locaties. Met publishable keys kun je tracken vanuit browsers en telefoons; met secret keys beheer je geofences en lees je events. Onnauwkeurige fixes worden opgeslagen maar triggeren geen events.
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"
}]
} Elk event gaat ook naar je webhooks met een MapSocket-Signature-header (HMAC-SHA256). Een handtekening verifiëren
Heb je tegels nodig die per request worden gegenereerd uit geparametriseerde SQL-functies, dan passen pg_tileserv of Martin beter. MapSocket is voor tabellen die gedurende de dag veranderen en kaarten die moeten bijblijven.
| Aanpak | Hoe tegels worden gemaakt | Als een rij verandert | Wat je zelf beheert |
|---|---|---|---|
| pg_tileserv | Een SQL-query per tegelrequest, on the fly | Zichtbaar bij het volgende request, maar elk request raakt je database | Een server naast je database |
| Martin | On the fly uit PostGIS, of uit MBTiles- en PMTiles-bestanden | Live als het dynamisch is, tegen querykosten; bestanden moeten opnieuw worden gebouwd | Een server, plus je eigen cache ervoor |
| Tippecanoe via een cronjob | Een volledige rebuild naar MBTiles of PMTiles | Wachten op de volgende run, die alles opnieuw bouwt | Een scheduler, opslag en een CDN |
| MapSocket | Vooraf gebouwde MBTiles, geserveerd vanuit cache | Alleen de geraakte tegels renderen opnieuw, binnen seconden | Niets. Plak een URL. |
Je geeft ons een connectiestring, dus dit is precies wat we ermee doen.
Een rol die SELECT mag uitvoeren op de tabellen die je publiceert. We raden een aparte read-only rol aan; het dashboard geeft je de exacte CREATE ROLE- en GRANT-statements. Voor live updates voer jij (niet wij) per tabel een kleine triggerfunctie uit, waarvoor je één keer tabeleigenaarsrechten nodig hebt.
Versleuteld met AES-256-GCM voordat hij onze database raakt, met de sleutel daarbuiten bewaard. Hij wordt alleen ontsleuteld in de worker die je tegels bouwt, en wordt nooit meer getoond in het dashboard of de API, alleen host, database en gebruiker.
Ja. Alle verbindingen met je database komen van een vaste set egress-IP's per regio, die in het dashboard naast elke verbinding staan. Voeg ze toe aan je security group of pg_hba.conf en verder hoeft er niets open te staan.
We verbinden standaard met sslmode=require en weigeren onversleutelde verbindingen, tenzij je dat expliciet uitzet voor een privénetwerk.
Nee. Rijen worden gelezen en direct gecodeerd tot vectortegels; het tegelarchief (MBTiles) is de enige kopie die we bewaren. Verwijder je een bron, dan worden de tegels mee verwijderd. Geofences die je uit een tabel synchroniseert worden opgeslagen als geometrieën plus de kolommen die je kiest.
Ja. Zet het aan onder Instellingen en beveiliging: scan een QR-code met een authenticator-app (Google Authenticator, 1Password, Authy, Microsoft Authenticator) en daarna heb je bij het inloggen naast je wachtwoord ook een 6-cijferige code nodig. Je krijgt tien eenmalige herstelcodes voor het geval je je telefoon kwijtraakt.
Je betaalt voor de bronnen die je draait en de requests die je serveert. Je database blijft van jou; we rekenen nooit per rij.
Probeer het op een zijproject
$0 / maand
Voor een product met een kaart erin
$29 / maand
Voor teams waarvan de data de hele dag beweegt
$149 / maand
Dedicated workers, in jouw cloud of de onze
Neem contact op
| Limiet | Sandbox | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Tegelbronnen | 1 | 5 | 25 | Onbeperkt |
| Databases | 1 | 2 | 10 | Onbeperkt |
| Tegelrequests | 50k / mnd | 1M / mnd | 10M / mnd | Op maat |
| Geofences | 100 | 5.000 | 100.000 | Onbeperkt |
| Gevolgde gebruikers | 100 / mnd | 5k / mnd | 50k / mnd | Op maat |
| Gegeorefereerde kaarten | 1 | 10 | 100 | Op maat |
| Updates | Rebuild elke 24 uur | Live, seconden na een write | Live, seconden na een write | Live, seconden na een write |
| Eigen tegeldomein | Nee | Nee | Ja | Ja |
Ga je op een betaald abonnement over je tegellimiet, dan blijven de tegels gewoon geserveerd; we mailen je voordat er iets verandert. De Sandbox pauzeert bij de limiet.
Ja, met één kanttekening: live updates gebruiken Postgres LISTEN, en dat werkt niet via poolers in transaction-modus. Gebruik de directe connectiestring (poort 5432 bij Supabase, de niet-gepoolde host bij Neon). Kun je alleen een gepoolde URL gebruiken, kies dan snapshotmodus en we bouwen opnieuw volgens schema.
Meestal één tot drie seconden van COMMIT tot een verse tegel. Notificaties worden gedebounced in kleine batches, dus een bulkbewerking van 10.000 rijen rendert elke geraakte tegel één keer opnieuw in plaats van 10.000 keer.
Alles wat Mapbox Vector Tiles en TileJSON leest: MapLibre GL, Mapbox GL, OpenLayers, Leaflet met een vector-tile-plugin, deck.gl, QGIS.
Ja. MapSocket draait tilefeed, dat een MIT-licentie heeft. Elke bron heeft een knop Export config die je de tilefeed-TOML geeft, en je kunt de MBTiles of een PMTiles-archief op elk moment downloaden.
Een unieke userId die in de maand minstens één /v1/track-call heeft gedaan. Calls naar /v1/context en geofence-zoekopdrachten tellen niet mee.
De meeste mensen hebben binnen vijf minuten na aanmelden een live tegel-URL.