Sandbox
Provalo su un progetto personale
$0 / mese
- 1 database, 1 sorgente di tile
- Rigenerazione ogni 24 ore
- 50.000 richieste di tile / mese
- 100 geofence, 100 utenti tracciati
Incolla l'URL di un database e ottieni un URL di tile vettoriali dinamiche che si aggiorna pochi secondi dopo la modifica di una riga. Poi trasforma gli stessi poligoni in geofence che ti avvisano quando arrivano le persone.
Sandbox gratuita, nessuna carta richiesta. Funziona con RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge o il tuo server.
14/8235/5419 e 14/8236/5419 rigenerate in 0,9 s. Le altre 22 tile non sono cambiate. Verifichiamo la connessione, la versione di PostGIS e i permessi, e ti diciamo se l'URL passa da un pooler che non può trasportare gli aggiornamenti live.
Ogni tabella con una colonna geometrica è elencata con SRID, stima delle righe e colonne. Scegli le proprietà da includere nelle tile e l'intervallo di zoom.
Ottieni un URL TileJSON e un template z/x/y con una chiave pubblica, limitata alle origini che consenti. Funziona ovunque funzionino le tile vettoriali.
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 ascolta il tuo database con LISTEN/NOTIFY di Postgres. Quando una riga cambia, vengono riscritte solo le tile che contenevano la sua forma vecchia o nuova. Una modifica di mille righe rigenera ogni tile interessata una sola volta.
INSERT, UPDATE o DELETE su una tabella pubblicata
Layer, id della riga, operazione e i vecchi limiti
Le raffiche vengono accorpate e deduplicate per tile
Solo le tile che toccano la geometria vecchia o nuova, a ogni livello di zoom
update_complete arriva via SSE; partono anche i webhook
-- 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()}`]);
}); Invia una posizione e ricevi le geofence in cui si trova e cosa è cambiato rispetto all'ultima. Eventi di ingresso, uscita e permanenza, visite ai luoghi, cambi di paese e regione e arrivi dei viaggi vengono inviati ai tuoi webhook, firmati per poterti fidare.
public.delivery_zones, scegli le colonne di id e tag, e i poligoni restano allineati alla tabella. Punti e linee possono essere trasformati in zone con un buffer. tag ed externalId, oppure importa GeoJSON o un CSV in formato Radar. POST /v1/trackGET /v1/contextGET /v1/search/geofencesPOST /v1/tripsOgni track indica anche il luogo (da OpenStreetMap), il paese e la regione, ed esegue controlli antifrode su salti impossibili e posizioni simulate. Le chiavi pubbliche possono fare tracking da browser e telefoni; le chiavi segrete gestiscono le geofence e leggono gli eventi. Le posizioni poco precise vengono salvate ma non generano eventi.
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"
}]
} Ogni evento viene inviato anche ai tuoi webhook con un header MapSocket-Signature (HMAC-SHA256). Verifica una firma
Se ti servono tile generate a ogni richiesta da funzioni SQL parametrizzate, pg_tileserv o Martin sono la scelta migliore. MapSocket è per tabelle che cambiano durante la giornata e mappe che devono stare al passo.
| Approccio | Come vengono create le tile | Quando una riga cambia | Cosa devi gestire |
|---|---|---|---|
| pg_tileserv | Una query SQL per ogni richiesta di tile, al volo | Visibile alla richiesta successiva, ma ogni richiesta colpisce il tuo database | Un server accanto al tuo database |
| Martin | Al volo da PostGIS, o da file MBTiles e PMTiles | Live in modalità dinamica, al costo delle query; i file vanno rigenerati | Un server, più una tua cache davanti |
| Tippecanoe con un cron | Una rigenerazione completa in MBTiles o PMTiles | Aspetti la prossima esecuzione, che rigenera tutto | Uno scheduler, uno storage e una CDN |
| MapSocket | MBTiles pre-generati, serviti dalla cache | Solo le tile interessate vengono rigenerate, in pochi secondi | Niente. Incolla un URL. |
Ci affidi una stringa di connessione, quindi ecco esattamente cosa ne facciamo.
Un ruolo che possa fare SELECT sulle tabelle che pubblichi. Consigliamo un ruolo dedicato in sola lettura; la dashboard ti fornisce le istruzioni CREATE ROLE e GRANT esatte. Per gli aggiornamenti live sei tu (non noi) a eseguire una piccola funzione trigger su ogni tabella, il che richiede una sola volta i diritti di proprietario della tabella.
Cifrata con AES-256-GCM prima di toccare il nostro database, con la chiave conservata al di fuori di esso. Viene decifrata solo all'interno del worker che genera le tue tile e non viene mai più mostrata nella dashboard o nell'API: solo host, database e utente.
Sì. Tutte le connessioni al tuo database partono da un insieme fisso di IP di uscita per regione, elencati nella dashboard accanto a ogni connessione. Aggiungili al tuo security group o a pg_hba.conf e non serve aprire nient'altro.
Ci colleghiamo con sslmode=require per impostazione predefinita e rifiutiamo le connessioni in chiaro, a meno che tu non lo disattivi esplicitamente per una rete privata.
No. Le righe vengono lette e codificate direttamente in tile vettoriali; l'archivio di tile (MBTiles) è l'unica copia che conserviamo. Elimina una sorgente e le sue tile vengono eliminate con lei. Le geofence sincronizzate da una tabella vengono salvate come geometrie più le colonne che scegli.
Sì. Attivala in Impostazioni e sicurezza: scansiona un codice QR con qualsiasi app di autenticazione (Google Authenticator, 1Password, Authy, Microsoft Authenticator) e da quel momento per accedere servirà un codice di 6 cifre oltre alla password. Ricevi dieci codici di recupero monouso nel caso perdessi il telefono.
Paghi per le sorgenti che usi e le richieste che servi. Il tuo database resta tuo; non fatturiamo mai in base alle righe.
Provalo su un progetto personale
$0 / mese
Per un prodotto con una mappa dentro
$29 / mese
Per team i cui dati si muovono tutto il giorno
$149 / mese
Worker dedicati, nel tuo cloud o nel nostro
Parliamone
| Limite | Sandbox | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Sorgenti di tile | 1 | 5 | 25 | Illimitato |
| Database | 1 | 2 | 10 | Illimitato |
| Richieste di tile | 50k / mese | 1M / mese | 10M / mese | Personalizzato |
| Geofence | 100 | 5000 | 100.000 | Illimitato |
| Utenti tracciati | 100 / mese | 5k / mese | 50k / mese | Personalizzato |
| Mappe georeferenziate | 1 | 10 | 100 | Personalizzato |
| Aggiornamenti | Rigenerazione ogni 24 ore | Live, pochi secondi dopo una scrittura | Live, pochi secondi dopo una scrittura | Live, pochi secondi dopo una scrittura |
| Dominio personalizzato per le tile | No | No | Sì | Sì |
Se superi il limite di tile su un piano a pagamento, le tile continuano a essere servite; ti scriviamo prima che cambi qualcosa. La Sandbox si mette in pausa al raggiungimento del limite.
Sì, con un'avvertenza: gli aggiornamenti live usano LISTEN di Postgres, che non funziona attraverso i pooler in modalità transaction. Usa la stringa di connessione diretta (porta 5432 su Supabase, l'host senza pooling su Neon). Se puoi usare solo un URL con pooling, scegli la modalità snapshot e rigenereremo secondo una pianificazione.
Di solito da uno a tre secondi dal COMMIT a una tile aggiornata. Le notifiche vengono raggruppate in piccoli batch, quindi una modifica massiva di 10.000 righe rigenera ogni tile interessata una volta invece di 10.000.
Qualsiasi cosa legga Mapbox Vector Tiles e TileJSON: MapLibre GL, Mapbox GL, OpenLayers, Leaflet con un plugin per tile vettoriali, deck.gl, QGIS.
Sì. MapSocket esegue tilefeed, che ha licenza MIT. Ogni sorgente ha un pulsante Export config che ti dà il TOML di tilefeed, e puoi scaricare gli MBTiles o un archivio PMTiles in qualsiasi momento.
Un userId distinto che ha inviato almeno una chiamata a /v1/track nel mese. Le chiamate a /v1/context e la ricerca di geofence non vengono conteggiate.
La maggior parte delle persone ha un URL di tile live entro cinque minuti dalla registrazione.