Sandbox
Pruébalo en un proyecto personal
$0 / mes
- 1 base de datos, 1 fuente de teselas
- Reconstrucción cada 24 horas
- 50.000 peticiones de teselas / mes
- 100 geocercas, 100 usuarios con tracking
Pega la URL de una base de datos y obtén una URL de teselas vectoriales dinámicas que se actualiza segundos después de que cambie una fila. Luego convierte esos mismos polígonos en geocercas que te avisan cuando llega la gente.
Sandbox gratis, sin tarjeta. Funciona con RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge o tu propio servidor.
14/8235/5419 y 14/8236/5419 renderizadas de nuevo en 0,9 s. Las otras 22 teselas no se movieron. Comprobamos la conexión, la versión de PostGIS y los permisos, y te avisamos si la URL pasa por un pooler que no puede transmitir actualizaciones en vivo.
Cada tabla con una columna de geometría aparece con su SRID, una estimación de filas y sus columnas. Elige las propiedades que deben ir en las teselas y el rango de zoom.
Obtienes una URL TileJSON y una plantilla z/x/y con una clave pública, restringida a los orígenes que permitas. Funciona en cualquier sitio donde funcionen las teselas vectoriales.
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 escucha tu base de datos con LISTEN/NOTIFY de Postgres. Cuando cambia una fila, solo se reescriben las teselas que contenían su forma antigua o nueva. Una edición de mil filas vuelve a renderizar cada tesela afectada una sola vez.
INSERT, UPDATE o DELETE en una tabla publicada
Capa, id de fila, operación y los límites anteriores
Las ráfagas se agrupan y se deduplican por tesela
Solo las teselas que tocan la geometría antigua o nueva, en cada zoom
update_complete llega por SSE; los webhooks también se disparan
-- 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()}`]);
}); Envía una ubicación y recibe las geocercas en las que está y lo que ha cambiado desde la anterior. Los eventos de entrada, salida y permanencia, las visitas a lugares, los cambios de país y región y las llegadas de viajes van a tus webhooks, firmados para que puedas confiar en ellos.
public.delivery_zones, elige las columnas de id y de tag, y los polígonos se mantienen al día con la tabla. Los puntos y las líneas se pueden convertir en zonas con un buffer. tag y externalId, o importa GeoJSON o un CSV en formato Radar. POST /v1/trackGET /v1/contextGET /v1/search/geofencesPOST /v1/tripsCada track también identifica el lugar (de OpenStreetMap), el país y la región, y detecta fraude por saltos imposibles y ubicaciones simuladas. Las claves públicas pueden hacer tracking desde navegadores y móviles; las claves secretas gestionan geocercas y leen eventos. Las posiciones de baja precisión se guardan pero no disparan eventos.
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"
}]
} Cada evento también se envía a tus webhooks con una cabecera MapSocket-Signature (HMAC-SHA256). Verificar una firma
Si necesitas teselas generadas en cada petición a partir de funciones SQL parametrizadas, pg_tileserv o Martin encajan mejor. MapSocket es para tablas que cambian a lo largo del día y mapas que tienen que seguirles el ritmo.
| Enfoque | Cómo se generan las teselas | Cuando cambia una fila | Qué tienes que operar |
|---|---|---|---|
| pg_tileserv | Una consulta SQL por petición de tesela, al vuelo | Visible en la siguiente petición, pero cada petición golpea tu base de datos | Un servidor junto a tu base de datos |
| Martin | Al vuelo desde PostGIS, o desde archivos MBTiles y PMTiles | En vivo en modo dinámico, al coste de las consultas; los archivos necesitan reconstruirse | Un servidor, más tu propia caché delante |
| Tippecanoe con un cron | Una reconstrucción completa a MBTiles o PMTiles | Esperar a la siguiente ejecución, que lo reconstruye todo | Un planificador, almacenamiento y una CDN |
| MapSocket | MBTiles precompilados, servidos desde caché | Solo se vuelven a renderizar las teselas afectadas, en segundos | Nada. Pega una URL. |
Nos das una cadena de conexión, así que esto es exactamente lo que hacemos con ella.
Un rol que pueda hacer SELECT sobre las tablas que publicas. Recomendamos un rol dedicado de solo lectura; el panel te da las sentencias CREATE ROLE y GRANT exactas. Para las actualizaciones en vivo, eres tú (no nosotros) quien ejecuta una pequeña función trigger en cada tabla, lo que requiere permisos de propietario de la tabla una sola vez.
Cifrada con AES-256-GCM antes de llegar a nuestra base de datos, con la clave guardada fuera de ella. Solo se descifra dentro del worker que construye tus teselas, y nunca vuelve a mostrarse en el panel ni en la API, solo el host, la base de datos y el usuario.
Sí. Todas las conexiones a tu base de datos salen de un conjunto fijo de IP de salida por región, que aparecen en el panel junto a cada conexión. Añádelas a tu grupo de seguridad o a pg_hba.conf y no hace falta abrir nada más.
Nos conectamos con sslmode=require por defecto y rechazamos conexiones en texto plano, salvo que lo desactives explícitamente para una red privada.
No. Las filas se leen y se codifican directamente en teselas vectoriales; el archivo de teselas (MBTiles) es la única copia que guardamos. Si eliminas una fuente, sus teselas se eliminan con ella. Las geocercas que sincronizas desde una tabla se guardan como geometrías más las columnas que elijas.
Sí. Actívala en Ajustes y seguridad: escanea un código QR con cualquier app de autenticación (Google Authenticator, 1Password, Authy, Microsoft Authenticator) y a partir de ahí iniciar sesión pedirá un código de 6 dígitos además de tu contraseña. Recibes diez códigos de recuperación de un solo uso por si pierdes el móvil.
Paga por las fuentes que ejecutas y las peticiones que sirves. Tu base de datos sigue siendo tuya; nunca cobramos por filas.
Pruébalo en un proyecto personal
$0 / mes
Para un producto con un mapa dentro
$29 / mes
Para equipos cuyos datos se mueven todo el día
$149 / mes
Workers dedicados, en tu nube o en la nuestra
Hablemos
| Límite | Sandbox | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Fuentes de teselas | 1 | 5 | 25 | Ilimitado |
| Bases de datos | 1 | 2 | 10 | Ilimitado |
| Peticiones de teselas | 50k / mes | 1M / mes | 10M / mes | A medida |
| Geocercas | 100 | 5000 | 100.000 | Ilimitado |
| Usuarios con tracking | 100 / mes | 5k / mes | 50k / mes | A medida |
| Mapas georreferenciados | 1 | 10 | 100 | A medida |
| Actualizaciones | Reconstrucción cada 24 horas | En vivo, segundos después de una escritura | En vivo, segundos después de una escritura | En vivo, segundos después de una escritura |
| Dominio de teselas propio | No | No | Sí | Sí |
Si superas tu límite de teselas en un plan de pago, las teselas se siguen sirviendo; te escribimos antes de que cambie nada. El Sandbox se pausa al llegar a su límite.
Sí, con un matiz: las actualizaciones en vivo usan LISTEN de Postgres, que no funciona a través de poolers en modo transacción. Usa la cadena de conexión directa (puerto 5432 en Supabase, el host sin pooling en Neon). Si solo puedes usar una URL con pooling, elige el modo snapshot y reconstruiremos según un horario.
Normalmente de uno a tres segundos desde el COMMIT hasta una tesela nueva. Las notificaciones se agrupan en pequeños lotes, así que una edición masiva de 10.000 filas vuelve a renderizar cada tesela afectada una vez en lugar de 10.000.
Cualquiera que lea Mapbox Vector Tiles y TileJSON: MapLibre GL, Mapbox GL, OpenLayers, Leaflet con un plugin de teselas vectoriales, deck.gl, QGIS.
Sí. MapSocket ejecuta tilefeed, que tiene licencia MIT. Cada fuente tiene un botón Export config que te da el TOML de tilefeed, y puedes descargar los MBTiles o un archivo PMTiles en cualquier momento.
Un userId distinto que haya enviado al menos una llamada a /v1/track en el mes. Las llamadas a /v1/context y la búsqueda de geocercas no cuentan.
La mayoría tiene una URL de teselas en vivo en menos de cinco minutos tras registrarse.