Sandbox
Experimente num projeto pessoal
$0 / mês
- 1 base de dados, 1 fonte de mosaicos
- Reconstrução a cada 24 horas
- 50 mil pedidos de mosaicos / mês
- 100 geofences, 100 utilizadores seguidos
Cole o URL de uma base de dados e obtenha um URL de mosaicos vetoriais dinâmicos que se atualiza segundos após uma linha mudar. Depois, transforme os mesmos polígonos em geofences que lhe dizem quando as pessoas chegam.
Sandbox gratuita, sem cartão. Funciona com RDS, Cloud SQL, Supabase, Neon, Crunchy Bridge ou o seu próprio servidor.
14/8235/5419 e 14/8236/5419 renderizados de novo em 0,9 s. Os outros 22 mosaicos não mudaram. Verificamos a ligação, a versão do PostGIS e as permissões, e avisamos se o URL passa por um pooler que não suporta atualizações em tempo real.
Cada tabela com uma coluna de geometria é listada com o SRID, uma estimativa de linhas e as colunas. Escolha as propriedades que entram nos mosaicos e o intervalo de zoom.
Recebe um URL TileJSON e um template z/x/y com uma chave publicável, restrita às origens que autorizar. Funciona em qualquer lado onde funcionem mosaicos vetoriais.
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 },
}],
},
}); A MapSocket escuta a sua base de dados com o LISTEN/NOTIFY do Postgres. Quando uma linha muda, só são reescritos os mosaicos que continham a forma antiga ou a nova. Uma edição de mil linhas volta a renderizar cada mosaico afetado uma única vez.
INSERT, UPDATE ou DELETE numa tabela publicada
Camada, id da linha, operação e os limites antigos
Picos de alterações são agregados e desduplicados por mosaico
Só os mosaicos que tocam a geometria antiga ou nova, em todos os níveis de zoom
update_complete chega por SSE; os webhooks também são disparados
-- 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()}`]);
}); Envie uma localização e receba as geofences onde ela se encontra e o que mudou desde a anterior. Eventos de entrada, saída e permanência, visitas a locais, mudanças de país e de região e chegadas de viagens são enviados para os seus webhooks, assinados para que possa confiar neles.
public.delivery_zones, escolha as colunas de id e de tag, e os polígonos mantêm-se em sincronia com a tabela. Pontos e linhas podem ser convertidos em zonas com um buffer. tag e externalId, ou importe GeoJSON ou um CSV no formato Radar. POST /v1/trackGET /v1/contextGET /v1/search/geofencesPOST /v1/tripsCada track identifica também o local (a partir do OpenStreetMap), o país e a região, e faz verificações de fraude para saltos impossíveis e localizações simuladas. As chaves publicáveis permitem fazer tracking a partir de browsers e telemóveis; as chaves secretas gerem geofences e leem eventos. Posições de baixa precisão são guardadas mas não disparam 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 é também enviado para os seus webhooks com um cabeçalho MapSocket-Signature (HMAC-SHA256). Verificar uma assinatura
Se precisa de mosaicos gerados a cada pedido a partir de funções SQL parametrizadas, o pg_tileserv ou o Martin são a melhor opção. A MapSocket é para tabelas que mudam ao longo do dia e mapas que devem acompanhar essas mudanças.
| Abordagem | Como são feitos os mosaicos | Quando uma linha muda | O que tem de operar |
|---|---|---|---|
| pg_tileserv | Uma query SQL por pedido de mosaico, em tempo real | Visível no pedido seguinte, mas cada pedido atinge a sua base de dados | Um servidor junto à sua base de dados |
| Martin | Em tempo real a partir do PostGIS, ou de ficheiros MBTiles e PMTiles | Em tempo real quando dinâmico, com o custo das queries; os ficheiros precisam de reconstrução | Um servidor, mais a sua própria cache à frente |
| Tippecanoe agendado com cron | Uma reconstrução completa para MBTiles ou PMTiles | Esperar pela próxima execução, que reconstrói tudo | Um agendador, armazenamento e uma CDN |
| MapSocket | MBTiles pré-construídos, servidos a partir de cache | Só os mosaicos afetados voltam a ser renderizados, em segundos | Nada. Cole um URL. |
Entrega-nos uma connection string, por isso eis exatamente o que fazemos com ela.
Uma role que possa fazer SELECT nas tabelas que publica. Recomendamos uma role dedicada só de leitura; o dashboard dá-lhe as instruções exatas de CREATE ROLE e GRANT. Para atualizações em tempo real, é o utilizador (não nós) que executa uma pequena função de trigger em cada tabela, o que requer permissões de proprietário da tabela uma única vez.
É cifrada com AES-256-GCM antes de chegar à nossa base de dados, com a chave guardada fora dela. Só é decifrada dentro do worker que constrói os seus mosaicos e nunca volta a ser mostrada no dashboard nem na API, apenas o host, a base de dados e o utilizador.
Sim. Todas as ligações à sua base de dados vêm de um conjunto fixo de IPs de saída por região, indicados no dashboard junto a cada ligação. Adicione-os ao seu security group ou ao pg_hba.conf e não é preciso abrir mais nada.
Ligamo-nos com sslmode=require por predefinição e recusamos ligações em texto simples, a menos que desative isso explicitamente para uma rede privada.
Não. As linhas são lidas e codificadas diretamente em mosaicos vetoriais; o arquivo de mosaicos (MBTiles) é a única cópia que guardamos. Se eliminar uma fonte, os respetivos mosaicos são eliminados com ela. As geofences sincronizadas a partir de uma tabela são guardadas como geometrias mais as colunas que escolher.
Sim. Ative-a em Definições e segurança: digitalize um código QR com qualquer aplicação de autenticação (Google Authenticator, 1Password, Authy, Microsoft Authenticator) e, a partir daí, iniciar sessão exige um código de 6 dígitos além da palavra-passe. Recebe dez códigos de recuperação de utilização única, para o caso de perder o telemóvel.
Paga pelas fontes que executa e pelos pedidos que serve. A sua base de dados continua a ser sua; nunca cobramos por linhas.
Experimente num projeto pessoal
$0 / mês
Para um produto com um mapa
$29 / mês
Para equipas cujos dados mudam o dia todo
$149 / mês
Workers dedicados, na sua cloud ou na nossa
Fale connosco
| Limite | Sandbox | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Fontes de mosaicos | 1 | 5 | 25 | Ilimitado |
| Bases de dados | 1 | 2 | 10 | Ilimitado |
| Pedidos de mosaicos | 50k / mês | 1M / mês | 10M / mês | Personalizado |
| Geofences | 100 | 5.000 | 100.000 | Ilimitado |
| Utilizadores seguidos | 100 / mês | 5k / mês | 50k / mês | Personalizado |
| Mapas georreferenciados | 1 | 10 | 100 | Personalizado |
| Atualizações | Reconstrução a cada 24 horas | Em tempo real, segundos após uma escrita | Em tempo real, segundos após uma escrita | Em tempo real, segundos após uma escrita |
| Domínio de mosaicos personalizado | Não | Não | Sim | Sim |
Se ultrapassar o limite de mosaicos num plano pago, os mosaicos continuam a ser servidos; enviamos-lhe um email antes de qualquer alteração. A Sandbox fica em pausa ao atingir o limite.
Sim, com uma ressalva: as atualizações em tempo real usam o LISTEN do Postgres, que não funciona através de poolers em modo de transação. Use a connection string direta (porta 5432 no Supabase, o host sem pooler no Neon). Se só puder usar um URL com pooler, escolha o modo snapshot e reconstruímos de forma agendada.
Normalmente um a três segundos entre o COMMIT e um mosaico atualizado. As notificações são agrupadas em pequenos lotes, por isso uma edição em massa de 10 000 linhas volta a renderizar cada mosaico afetado uma vez, em vez de 10 000 vezes.
Tudo o que leia Mapbox Vector Tiles e TileJSON: MapLibre GL, Mapbox GL, OpenLayers, Leaflet com um plugin de vector tiles, deck.gl, QGIS.
Sim. A MapSocket executa o tilefeed, que tem licença MIT. Cada fonte tem um botão Export config que lhe dá o TOML do tilefeed, e pode descarregar os MBTiles ou um arquivo PMTiles a qualquer momento.
Um userId distinto que tenha enviado pelo menos uma chamada /v1/track no mês. As chamadas a /v1/context e a pesquisa de geofences não contam.
A maioria das pessoas tem um URL de mosaicos em tempo real até cinco minutos depois de se registar.