Ferramenta gratuita

RoughRoute — waypoints de entrada, uma rota rodoviária real de saída

Um mini-roteador offline baseado em dados OpenStreetMap. Forneça pontos de referência ordenados e ele retornará uma polilinha que segue estradas reais – sem chamadas de rede em tempo de execução, em milissegundos de um dígito.

Gratuito e de código aberto · Rust · MIT License

O problema

🧭 Uma linha reta não é uma estrada

Qualquer coisa que simule movimento — uma ferramenta de reprodução mock-GPS, uma demonstração, uma animação de mapa — precisa de um caminho que pareça ter sido percorrido, e não de uma linha reta através de edifícios. Mecanismos de roteamento completo resolvem isso, mas são pesados, e a maioria deles espera um servidor do outro lado de uma chamada de rede.

A ideia

📦 Pequeno o suficiente para incorporar

RoughRoute faz uma coisa: pontos de referência, uma linha plausível de seguimento de estrada. O mapa é compilado antecipadamente em um arquivo de mapa compacto que acompanha seu aplicativo, portanto, em tempo de execução, não há servidor, nenhuma chave API e nada que limite sua taxa.

Características

O que isso faz

📴 Nenhuma rede em tempo de execução

As consultas são executadas em um arquivo de mapa pré-criado no dispositivo. Funciona em avião, túnel ou CI com a rede desligada.

🧩 Um núcleo, três cascas

O mesmo núcleo Rust é compilado em WebAssembly para o navegador, uma biblioteca nativa Android via UniFFI e um binário de linha de comando.

⚡ Consultas de milissegundos de um dígito

A* através de uma rede rodoviária comprimida. Rápido o suficiente para rotear cada quadro de uma reprodução, não apenas uma vez no início.

🗜 Arquivos de mapa medidos em megabytes

O colapso de grau 2 e a geometria comprimida delta mantêm uma região utilizável pequena o suficiente para agrupar ou servir de um CDN.

🚗 Dirigindo e caminhando

Um arquivo de mapa transporta ambos os perfis através de máscaras de acesso, para que você não construa e envie a região duas vezes.

🔁 Mesma entrada, mesmos bytes

A rota é determinística: os mesmos pontos de referência e o mesmo arquivo de mapa sempre produzem a mesma linha. Boas notícias para testes que comparam resultados.

Como funciona

⚙️ Três etapas

  1. Com antecedência, compile uma região .osm.pbf em um arquivo .graph compacto.
  2. Envie esse arquivo – agrupe-o com o aplicativo ou coloque-o atrás de um CDN.
  3. No dispositivo, carregue esse arquivo e execute consultas localmente. Você recebe de volta as coordenadas e a distância.
Experimente

⌨️ Da linha de comando

roughroute build region.osm.pbf -o region.graph

roughroute route region.graph \
  --profile car \
  --via 40.7128,-74.0060 \
  --via 40.7580,-73.9855 \
  --format geojson

Ou no navegador, via WebAssembly:

const router = new WasmRouter(graphBytes);
const { coords, distance } = router.route(waypoints, "car");

⚖️ O que deliberadamente não faz

RoughRoute troca precisão por tamanho e velocidade. Ignora ruas de mão única, restrições de conversão e custos baseados na velocidade e, se não conseguir encontrar um caminho, devolve um segmento reto em vez de recusar. Essa é a opção certa para reprodução, demonstrações e substitutos off-line – e a errada para navegação passo a passo, onde você deseja um mecanismo de roteamento completo.

Licenciado pelo MIT. Os dados do mapa vêm de contribuidores OpenStreetMap, licenciados sob ODbL.