Безплатни картни плочки за вашите сайтове и приложения Бързо. Безплатно. Завинаги.

Неограничени векторни картни плочки с данни от OpenStreetMap, готови за MapLibre GL или Leaflet. Без API ключ, без квоти и без изненадващи сметки.

С данни от OpenFreeMap 🚀

Защо картните плочки излизат скъпо (а LFMaps — не)

Повечето доставчици на картни плочки ви посрещат с безплатни кредити. После трафикът расте и таксуването според потреблението превръща малкия експеримент в сериозна сметка — неясни показатели, такси за всяко зареждане на карта и ценоразписи, за които ви трябва електронна таблица. Така работят и Google Maps, и Mapbox. Привидно безплатното се превръща в разход, който проектът ви може да не иска.

При LFMaps е различно. Безплатно означава безплатно — без изненади, без лимити и без фактури.

Защо да изберете LFMaps за безплатни картни плочки?

Всичко необходимо, за да добавите карта. Нищо излишно.

Не е нужен API ключ

Добавете URL адреса на плочките и започнете. Без регистрация, токен за достъп или контролен панел.

Неограничени заявки за плочки

Без квоти, скрити ограничения или таксуване на всяко зареждане на карта. Използвайте колкото ви е нужно.

Безплатно завинаги

Нулев разход при всякакъв трафик — десет преглеждания на картата или десет милиона.

Без проследяване и събиране на данни

Не проследяваме посетителите ви и не задаваме бисквитки. Политиката ви за поверителност остава също толкова кратка.

Интерактивна демонстрация на векторни плочки — три стила на картата

Как да добавите безплатни картни плочки към сайта си

Работи най-добре с MapLibre GL, но също и с Leaflet или React

Стъпка 1: Добавете MapLibre GL към 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>

MapLibre GL v6 се разпространява само като ES модули, затова тези примери го зареждат чрез import map и модулен скрипт.

Или инсталирайте с npm

npm i maplibre-gl@^6

След това го импортирайте в 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)

В компилиран пакет MapLibre не може сам да намери своя worker. Този вариант е за Vite; за webpack и други инструменти вижте ръководството за инсталиране на MapLibre.

Стъпка 2: Създайте своята карта

<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>

Съвет: зареждайте MapLibre при нужда за по-добри Core Web Vitals

Препоръчително

Как помага:

Подобрява Largest Contentful Paint (LCP)
Намалява First Input Delay (FID)
Държи Cumulative Layout Shift (CLS) под контрол
Спестява около 750 KB при първото зареждане

По-добрите Core Web Vitals често водят до по-добро класиране в търсачките

Използвайте този модул за по-бързо първоначално показване на страницата:

// Вариант за Vite; за други инструменти за пакетиране вижте ръководството за инсталиране
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Зарежда MapLibre GL и неговия CSS само при нужда
 * @returns {Promise} Модулът MapLibre GL
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Зарежда динамично CSS на MapLibre GL
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * Клас за отложено зареждане на MapLibre GL
 * Предоставя API, подобен на maplibregl, но с отложено зареждане
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Създава нова карта и при нужда зарежда отложено MapLibre GL
     * @param {Object} options - Настройки на картата
     * @returns {Promise} Екземпляр на Map от MapLibre GL
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Връща библиотеката MapLibre GL, като при нужда я зарежда отложено
     * @returns {Promise} Библиотеката MapLibre GL
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Пример за използване:

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

// Създавайте картата само при нужда (напр. при превъртане или действие на потребителя)
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Добавете контроли, маркери и др.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

За разширените възможности и пълното описание на API вижте документацията на MapLibre GL JS

Използвате Leaflet? Добавете безплатни плочки с един плъгин

Leaflet не може да чете векторни плочки самостоятелно, затова го комбинирайте с плъгина 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>

Плъгинът поддържа Leaflet 1.x — същите безплатни плочки, без никакви сметки.

Безплатни картни плочки в 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"
    />
  )
}

Без mapbox-gl и без токен за достъп — react-map-gl работи директно с MapLibre GL.

Безплатни стилове за картни плочки: bright, positron и liberty

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

Създадено за скорост: бързо зареждане на картни плочки по целия свят

Светкавична скорост

Плочките се доставят чрез CDN, така че картите се появяват за миг

Надеждност

99,9% достъпност

Глобално покритие

Данни от OpenStreetMap за целия свят

Лесно вграждане

Няколко реда с MapLibre GL или Leaflet и картата ви работи

Безплатна алтернатива на Google Maps и Mapbox

Същата задача — карта на страницата ви. Съвсем различна сметка в края на месеца.

Платени доставчици на картни плочки

  • Безплатен план, а след изчерпването му — такса за всяко зареждане на карта
  • API ключ, който трябва да създавате, защитавате и подменяте
  • Панели за потребление, квоти и известия за такси, които трябва да следите
  • Събиране на аналитични данни за хората, които използват картата ви

LFMaps

  • Безплатно при всякакъв трафик — няма лимит, който да надхвърлите
  • Без API ключ, защото няма акаунт
  • Нищо за следене: поставете URL адреса на стила и продължете
  • Без проследяване на вас или посетителите ви

Честно за ограниченията: LFMaps предоставя само картни плочки. Геокодирането, изчисляването на маршрути и навигацията завой по завой не са част от услугата.

Безплатни картни плочки: често задавани въпроси

Наистина ли LFMaps е безплатен?

Да. Няма платен план, не се изисква кредитна карта и няма сметки за потребление — независимо от трафика ви. LFMaps се финансира като страничен проект, подобно на останалите безплатни инструменти на тази страница.

Нужен ли ми е API ключ или акаунт?

Не. Няма регистрация и няма токен, който да подменяте. Задайте URL адрес на LFMaps за стила на картата си и тя ще работи.

Има ли ограничения за честотата на заявките или квоти за картните плочки?

Няма квоти или твърд лимит за честотата на заявките. Молим само да не изтегляте масово целия набор от плочки — нормалното използване на карта в сайт или приложение е напълно приемливо.

LFMaps работи ли с Leaflet, както и с MapLibre GL?

Да. MapLibre GL показва векторните плочки без допълнителни плъгини и го препоръчваме, но Leaflet също работи с плъгина maplibre-gl-leaflet.

Откъде идват данните за картата?

От OpenStreetMap, предоставени чрез OpenFreeMap. Данните са създадени от общността и точно затова могат да останат безплатни.

Мога ли да използвам LFMaps в търговски сайт?

Да, включително в търговски проекти. Оставете обозначението на OpenStreetMap като източник видимо на картата — това е единственото изискване.

Проследявате ли посетителите ми?

Не. Не събираме лични данни и не задаваме бисквитки при заявките за плочки, така че добавянето на карта не изисква допълнения към политиката ви за поверителност.

Каква е разликата с Google Maps или Mapbox?

Те предлагат безплатен план, а когато го надхвърлите, таксуват всяко зареждане на карта. При LFMaps изобщо няма таксуване според потреблението: цената е нула и при десет преглеждания, и при десет милиона.