Mapas gratuitos para os seus sites e aplicações Rápidos. Gratuitos. Para sempre.

Mosaicos vetoriais de mapas sem limites, criados a partir dos dados do OpenStreetMap e prontos a integrar no MapLibre GL ou no Leaflet. Sem chave API, sem quotas, sem faturas inesperadas.

Com tecnologia de OpenFreeMap 🚀

Porque é que os mapas ficam caros (e o LFMaps não)

A maioria dos fornecedores de mosaicos de mapas começa por oferecer créditos gratuitos. Depois, o tráfego cresce e a faturação por utilização transforma uma pequena experiência numa verdadeira despesa — contadores pouco transparentes, custos que aumentam a cada carregamento do mapa e tabelas de preços que exigem uma folha de cálculo. Tanto o Google Maps como o Mapbox funcionam assim. O que parecia gratuito torna-se um custo que o seu projeto pode não querer suportar.

O LFMaps é diferente. Gratuito significa gratuito — sem surpresas, sem limites, sem faturas.

Porquê escolher o LFMaps para obter mapas gratuitos?

Tudo o que precisa para pôr um mapa a funcionar. Sem complicações.

Sem chave API

Basta inserir o URL dos mosaicos. Sem registo, sem token de acesso, sem painel de controlo.

Pedidos de mosaicos ilimitados

Sem quotas, sem limites flexíveis, sem contagem de carregamentos do mapa. Use o que precisar.

Gratuito para sempre

Custo zero, qualquer que seja o tráfego — dez visualizações do mapa ou dez milhões.

Sem rastreio nem recolha de dados

Não rastreamos os seus visitantes nem definimos cookies. A sua política de privacidade continua tão simples como antes.

Demonstração de mosaicos vetoriais — três estilos de mapa

Como adicionar mapas gratuitos ao seu site

Funciona melhor com MapLibre GL, mas também com Leaflet ou React

Passo 1: Adicione o MapLibre GL ao seu HTML

<link href="https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.css" rel="stylesheet" />
<script type="importmap">
  { "imports": { "maplibre-gl": "https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.mjs" } }
</script>

O MapLibre GL v6 é distribuído apenas como módulos ES, pelo que estes exemplos o carregam através de um mapa de importações e de um script de módulo.

Ou instale com npm

npm i maplibre-gl@^6

Depois, importe-o no seu JavaScript:

import * as maplibregl from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url'

maplibregl.setWorkerUrl(workerUrl)

Num bundle, o MapLibre não consegue localizar o seu worker sozinho. Este exemplo usa Vite; para webpack e outros, consulte o guia de instalação do MapLibre.

Passo 2: Crie o seu mapa

<div id="map" style="width: 100%; height: 500px"></div>
<script type="module">
  import * as maplibregl from 'maplibre-gl'

  const map = new maplibregl.Map({
    style: 'https://data.lfmaps.fr/styles/bright',
    center: [6.1844, 48.6937],
    zoom: 12,
    container: 'map',
  })
</script>

Dica: carregue o MapLibre apenas quando necessário para melhorar as Core Web Vitals

Recomendado

Vantagens:

Melhora o Largest Contentful Paint (LCP)
Reduz o First Input Delay (FID)
Mantém o Cumulative Layout Shift (CLS) sob controlo
Poupa cerca de 750 KB no carregamento inicial

Melhores Core Web Vitals tendem a favorecer a posição nos resultados de pesquisa

Use este carregador para tornar a apresentação inicial mais leve:

// Exemplo para Vite; consulte o guia de instalação para outros bundlers
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Carrega o MapLibre GL e o respetivo CSS apenas quando necessário
 * @returns {Promise} O módulo MapLibre GL
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Carrega dinamicamente o CSS do MapLibre GL
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * Classe de carregamento diferido do MapLibre GL
 * Disponibiliza uma API semelhante à de maplibregl, mas com carregamento diferido
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Cria uma nova instância de mapa, carregando o MapLibre GL apenas se necessário
     * @param {Object} options - Opções de configuração do mapa
     * @returns {Promise} Uma instância de Map do MapLibre GL
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Obtém a biblioteca MapLibre GL, carregando-a apenas se necessário
     * @returns {Promise} A biblioteca MapLibre GL
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Exemplo de utilização:

import MapLibreLoader from './maplibre-loader.js';

// Criar o mapa apenas quando necessário (por exemplo, ao deslocar a página ou interagir)
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Adicionar controlos, marcadores, etc.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

Para funcionalidades avançadas e a API completa, consulte a documentação do MapLibre GL JS

Usa Leaflet? Adicione mosaicos gratuitos com um único plugin

O Leaflet não consegue ler mosaicos vetoriais por si só, pelo que deve combiná-lo com o plugin maplibre-gl-leaflet:

<link href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" rel="stylesheet" />
<script type="importmap">
  { "imports": {
    "leaflet": "https://unpkg.com/leaflet@1.9.4/dist/leaflet-src.esm.js",
    "maplibre-gl": "https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.mjs"
  } }
</script>

<script type="module">
  import * as L from 'leaflet'
  import { maplibreGL } from 'https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.1.4/dist/leaflet-maplibre-gl.mjs'

  const map = L.map('map').setView([48.6937, 6.1844], 12)
  maplibreGL({
    style: 'https://data.lfmaps.fr/styles/bright',
  }).addTo(map)
</script>

O plugin suporta Leaflet 1.x — os mesmos mosaicos gratuitos, sem qualquer faturação.

Mapas gratuitos em React

npm i react-map-gl maplibre-gl@^6
import Map from 'react-map-gl/maplibre'
import { setWorkerUrl } from 'maplibre-gl'
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url'
import 'maplibre-gl/dist/maplibre-gl.css'

setWorkerUrl(workerUrl)

export default function MyMap() {
  return (
    <Map
      initialViewState={{ longitude: 6.1844, latitude: 48.6937, zoom: 12 }}
      style={{ width: '100%', height: 500 }}
      mapStyle="https://data.lfmaps.fr/styles/bright"
    />
  )
}

Sem mapbox-gl nem token de acesso — o react-map-gl comunica diretamente com o MapLibre GL.

Estilos de mapas gratuitos: bright, positron e liberty

  • https://data.lfmaps.fr/styles/bright
  • https://data.lfmaps.fr/styles/positron
  • https://data.lfmaps.fr/styles/liberty

Rapidez em primeiro lugar: mosaicos de mapas entregues em todo o mundo

Ultrarrápido

Mosaicos servidos por uma CDN, para que os mapas apareçam num instante

Fiável

99,9% de disponibilidade

Cobertura global

Dados do OpenStreetMap que abrangem o mundo inteiro

Integração simples

Bastam algumas linhas de MapLibre GL ou Leaflet para ter o mapa a funcionar

Uma alternativa gratuita ao Google Maps e ao Mapbox

A mesma função — um mapa na sua página. Uma fatura bem diferente ao fim do mês.

Fornecedores pagos de mosaicos de mapas

  • Um plano gratuito, seguido de faturação por carregamento quando ultrapassa o limite
  • Uma chave API para criar, proteger e renovar
  • Painéis de utilização, quotas e alertas de faturação para acompanhar
  • Recolha de dados analíticos sobre quem utiliza o seu mapa

LFMaps

  • Gratuito com qualquer volume de tráfego — não há contadores nem limites a ultrapassar
  • Sem chave API, porque não é preciso criar conta
  • Nada para vigiar: cole o URL de um estilo e siga em frente
  • Sem rastreio de si nem dos seus visitantes

A limitação, com toda a transparência: o LFMaps fornece apenas mosaicos de mapas. A geocodificação, o cálculo de percursos e as indicações de navegação passo a passo não fazem parte do serviço.

Mapas gratuitos: perguntas frequentes

O LFMaps é mesmo gratuito?

Sim. Não há plano pago, cartão de crédito nem faturas de utilização — seja qual for o seu tráfego. O LFMaps é financiado como projeto paralelo, tal como as outras ferramentas gratuitas desta página.

Preciso de uma chave API ou de uma conta?

Não. Não precisa de se registar nem de renovar tokens. Basta configurar o estilo do mapa com um URL do LFMaps e está pronto.

Existem limites de pedidos ou quotas para os mosaicos de mapas?

Não há quotas nem limites rígidos de pedidos. Pedimos apenas que não descarregue em massa todo o conjunto de mosaicos — a utilização normal de mapas num site ou aplicação não tem qualquer problema.

O LFMaps funciona tanto com Leaflet como com MapLibre GL?

Sim. O MapLibre GL apresenta os mosaicos vetoriais de forma nativa e é a opção que recomendamos, mas o Leaflet também funciona com o plugin maplibre-gl-leaflet.

De onde vêm os dados dos mapas?

Do OpenStreetMap, disponibilizados através do OpenFreeMap. Os dados são criados pela comunidade, e é precisamente por isso que podem continuar gratuitos.

Posso usar o LFMaps num site comercial?

Sim, incluindo projetos comerciais. Mantenha a atribuição ao OpenStreetMap visível no mapa — é o único requisito.

Rastreiam os meus visitantes?

Não. Não recolhemos dados pessoais nem definimos cookies nos pedidos de mosaicos, pelo que adicionar um mapa não acrescenta nada à sua política de privacidade.

Qual é a diferença em relação ao Google Maps ou ao Mapbox?

Esses serviços oferecem um plano gratuito e depois cobram por carregamento do mapa à medida que o projeto cresce. O LFMaps não tem contadores: o preço é zero para dez visualizações do mapa ou para dez milhões.