尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Mapa 3D da rede sobre trilhos da Região Metropolitana de São Paulo — Metrô (linhas 1, 2, 3, 4, 5, 6, 15 e 17) e trens metropolitanos (linhas 7 a 13) — com a posição estimada de cada trem em tempo real, em 3D sobre um mapa de verdade da cidade (inspirado no Mini Tokyo 3D).
⚠️ Projeto não oficial. As posições são calculadas a partir da tabela oficial de intervalos; não vêm de GPS nem de nenhum sistema das operadoras. O site não tem vínculo com Metrô, CPTM, ViaQuatro, ViaMobilidade, TIC Trens, Trivia Trens, Linha Uni, SPTrans, EMTU, Governo do Estado ou Prefeitura de São Paulo. O aviso aparece fixo no topo da tela e detalhado no diálogo "Saiba mais".
/ no computador).#estacao=pinheiros, #linha=4,
#trem=…, #local=…) e o botão de compartilhar abre o menu do celular ou copia o link.npm install
npm run dev # http://localhost:5173
npm run build # gera dist/ (site 100% estático)
npm run preview # serve o dist/ para conferir
Para a prévia do link no WhatsApp/redes funcionar, gere o build com o endereço público do site (a imagem de prévia precisa de endereço completo):
SITE_URL=https://seu-dominio.com.br npm run build
A imagem (public/og-image.png, 1200×630) é gerada a partir das linhas reais com npm run og.
O dist/ pode ser publicado em qualquer hospedagem estática (Netlify, Vercel, GitHub Pages, Cloudflare Pages, S3…).
Os caminhos são relativos (base: './'), então funciona também em subpastas. A hospedagem precisa aceitar requisições
HTTP Range (todas essas aceitam) e não deve recomprimir o .pmtiles.
Nenhuma API ou servidor de mapas externo é chamado em tempo de execução:
public/data/network.json (~205 KB, ~70 KB com gzip);public/map/sp.pmtiles (~35 MB, recorte do OpenStreetMap só da região da rede). O
navegador não baixa o arquivo inteiro: pede por HTTP Range só os tiles que aparecem na tela (dezenas de KB por
vez), então abre rápido também no celular;public/map/fonts e public/map/sprites.frequencies.txt) traz o intervalo entre trens
de cada hora. Os trens partem dos terminais do horário de abertura ao de fechamento nesses intervalos
(intervalos abaixo do mínimo técnico da sinalização são elevados a esse mínimo — ver minHeadway).tripMin,
velocidade comercial de ~30–45 km/h, já contando as paradas).dwell / dwellX).Os parâmetros por linha ficam em src/data/lines-meta.js e o modelo em
src/sim/model.js.
brew install pmtiles # CLI do Protomaps (uma vez)
npm run map:fetch # recorta o mapa-múndi do Protomaps para a área da rede (+ margem) e baixa fontes/ícones
O recorte vai até o zoom 14 (de perto o MapLibre amplia os vetores, sem perder nitidez). A área é calculada a partir
dos traçados em network.json; se a rede crescer, basta rodar de novo.
Por que não Google Maps? Os termos de uso do Google não permitem baixar e hospedar os mapas. O OpenStreetMap tem licença aberta (ODbL) e permite exatamente isso.
npm run data # baixa (data:fetch) e processa (data:build)
scripts/fetch-data.mjs baixa para data-raw/ (fora do git):
mdb-8).scripts/build-data.mjs gera public/data/network.json: traçados suavizados, estações agrupadas em complexos de
integração, conexões a pé, terminais de ônibus da SPTrans próximos às estações, rodoviárias e aeroportos.Se uma linha nova aparecer no GTFS, basta adicioná-la em lines-meta.js com o route_id correspondente.
src/
main.js mapa, câmera, abertura, seleção, toque/clique e o loop
data/lines-meta.js cores oficiais, operadoras, afastamento entre linhas, parâmetros de estimativa
data/network.js carrega e prepara o network.json
sim/model.js partidas, perfil de velocidade, posição dos trens, próximas chegadas
core/time.js relógio no fuso de São Paulo (ao vivo ou simulado)
map/basemap.js estilo claro do mapa de fundo (MapLibre + PMTiles do Protomaps)
map/geo.js conversões km da rede ↔ lng/lat ↔ Mercator
map/network-layers.js estações, rótulos, plaquinhas das linhas e pontos de interesse (camadas nativas)
map/rails-layer.js linhas em WebGL2: desenho na abertura, pulso na linha selecionada, rastro dos trens
map/trains-layer.js trens 3D (nariz em bico, faróis/lanternas, sombra, anel do selecionado)
map/images.js plaquinhas e ícones desenhados em canvas
ui/ui.js painéis, barra de linhas e favoritas, horário, aviso
ui/search.js busca de estações, linhas e terminais
ui/favorites.js estações favoritas (localStorage)
ui/permalink.js link compartilhável (seleção no endereço)