Nemokamos žemėlapio išklotinės jūsų svetainėms ir programėlėms Greitai. Nemokamai. Visada.

Neribotos vektorinės žemėlapio išklotinės iš OpenStreetMap duomenų, paruoštos naudoti su MapLibre GL ar Leaflet. Be API rakto, kvotų ir netikėtų sąskaitų.

Veikia su OpenFreeMap 🚀

Kodėl žemėlapio išklotinės brangsta, o LFMaps lieka nemokamas?

Dauguma žemėlapio išklotinių teikėjų iš pradžių pasiūlo nemokamų kreditų. Tačiau lankomumui augant, mokėjimas už naudojimą nedidelį bandymą paverčia tikromis išlaidomis: neaiškūs skaitikliai, mokestis už kiekvieną žemėlapio įkėlimą ir kainoraščiai, kuriems suprasti reikia skaičiuoklės. Taip veikia ir Google Maps, ir Mapbox. Tai, kas atrodė nemokama, tampa išlaidomis, kurių jūsų projektui visai nereikia.

LFMaps veikia kitaip. Nemokamai reiškia nemokamai: be staigmenų, apribojimų ir sąskaitų.

Kodėl nemokamoms žemėlapio išklotinėms rinktis LFMaps?

Viskas, ko reikia žemėlapiui įdiegti. Nieko nereikalingo.

Nereikia API rakto

Įrašykite išklotinių URL ir pradėkite. Be registracijos, prieigos rakto ir valdymo skydelio.

Neribotos išklotinių užklausos

Be kvotų, paslėptų apribojimų ir žemėlapio įkėlimų skaitiklio. Naudokite tiek, kiek reikia.

Visada nemokamai

Jokių išlaidų, kad ir koks lankomumas: dešimt žemėlapio peržiūrų ar dešimt milijonų.

Be sekimo ir duomenų rinkimo

Nesekame jūsų lankytojų ir neįrašome slapukų. Privatumo politika gali likti tokia pat trumpa.

Gyva vektorinių išklotinių demonstracija: trys žemėlapio stiliai

Kaip pridėti nemokamas žemėlapio išklotines prie savo svetainės

Geriausiai veikia su MapLibre GL, taip pat su Leaflet ir React

1 žingsnis: pridėkite MapLibre GL prie 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 platinama tik ES moduliais, todėl šiuose pavyzdžiuose ji įkeliama naudojant importų žemėlapį ir modulio scenarijų.

Arba įdiekite per npm

npm i maplibre-gl@^6

Tada importuokite į JavaScript kodą:

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)

Sukomplektuotoje programoje MapLibre negali savarankiškai rasti savo vykdyklės. Čia pateiktas Vite variantas; apie webpack ir kitus įrankius skaitykite MapLibre diegimo vadove.

2 žingsnis: sukurkite žemėlapį

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

Patarimas: atidėkite MapLibre įkėlimą ir pagerinkite Core Web Vitals rodiklius

Rekomenduojama

Kuo tai naudinga:

Pagerina Largest Contentful Paint (LCP) rodiklį
Sumažina First Input Delay (FID) delsą
Padeda kontroliuoti Cumulative Layout Shift (CLS)
Pirmą kartą įkeliant sutaupo apie 750 KB

Geresni Core Web Vitals rodikliai dažnai padeda užimti aukštesnes pozicijas paieškoje

Naudokite šį įkėliklį, kad pradinis puslapio vaizdas pasirodytų greičiau:

// Vite variantas; kitų komplektavimo įrankių instrukcijas rasite diegimo vadove
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Prireikus atidėtai įkelia MapLibre GL ir jo CSS
 * @returns {Promise} MapLibre GL modulis
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Dinamiškai įkelia MapLibre GL CSS
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * MapLibre GL atidėtojo įkėlimo klasė
 * Teikia į maplibregl panašią API su atidėtuoju įkėlimu
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Sukuria naują žemėlapio egzempliorių, prireikus atidėtai įkeldama MapLibre GL
     * @param {Object} options - Žemėlapio konfigūracijos parinktys
     * @returns {Promise} MapLibre GL Map egzempliorius
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Gauna MapLibre GL biblioteką, prireikus ją atidėtai įkeldama
     * @returns {Promise} MapLibre GL biblioteka
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Naudojimo pavyzdys:

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

// Sukurti žemėlapį tik prireikus, pavyzdžiui, slenkant ar naudotojui atliekant veiksmą
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Pridėti valdiklius, žymeklius ir kt.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

Apie išplėstines galimybes ir visą API skaitykite MapLibre GL JS dokumentacijoje

Naudojate Leaflet? Pridėkite nemokamas žemėlapio išklotines vienu papildiniu

Leaflet savarankiškai neskaito vektorinių išklotinių, todėl naudokite jį su maplibre-gl-leaflet papildiniu:

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

Papildinys palaiko Leaflet 1.x: tos pačios nemokamos išklotinės, be jokių sąskaitų.

Nemokamos žemėlapio išklotinės React programose

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"
    />
  )
}

Be mapbox-gl ir prieigos rakto: react-map-gl tiesiogiai bendrauja su MapLibre GL.

Nemokamų žemėlapio išklotinių stiliai: bright, positron ir liberty

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

Sukurta spartai: greitas žemėlapio išklotinių pristatymas visame pasaulyje

Žaibiškai greitai

Išklotinės teikiamos per CDN, todėl žemėlapiai pasirodo akimirksniu

Patikima

99,9% pasiekiamumas

Viso pasaulio aprėptis

OpenStreetMap duomenys apima visą pasaulį

Lengva integruoti

Kelios MapLibre GL ar Leaflet kodo eilutės ir žemėlapis jau veikia

Nemokama alternatyva Google Maps ir Mapbox

Tas pats tikslas: žemėlapis jūsų puslapyje. Visai kitokia sąskaita mėnesio pabaigoje.

Mokami žemėlapio išklotinių teikėjai

  • Nemokamas planas, o jį išaugus – mokestis už kiekvieną žemėlapio įkėlimą
  • API raktas, kurį reikia sukurti, apsaugoti ir keisti
  • Naudojimo skydeliai, kvotos ir mokėjimo įspėjimai, kuriuos reikia stebėti
  • Renkama žemėlapio naudotojų analitika

LFMaps

  • Nemokamai esant bet kokiam lankomumui: jokio skaitiklio, kurio ribas galėtumėte viršyti
  • Be API rakto, nes nereikia paskyros
  • Nieko nereikia stebėti: įklijuokite stiliaus URL ir tęskite darbą
  • Nesekame nei jūsų, nei jūsų lankytojų

Atvirai apie ribas: LFMaps teikia tik žemėlapio išklotines. Geokodavimas, maršrutų skaičiavimas ir nuoseklios navigacijos instrukcijos į paslaugą neįeina.

Nemokamos žemėlapio išklotinės: dažniausi klausimai

Ar LFMaps tikrai nemokamas?

Taip. Nėra mokamo plano, nereikia mokėjimo kortelės ir negausite sąskaitos už naudojimą, kad ir koks būtų lankomumas. LFMaps finansuojamas kaip papildomas projektas, kaip ir kiti šiame puslapyje pristatyti nemokami įrankiai.

Ar reikia API rakto arba paskyros?

Ne. Nereikia registruotis ar keisti prieigos rakto. Nurodykite LFMaps URL savo žemėlapio stiliui ir viskas veiks.

Ar žemėlapio išklotinėms taikomos užklausų dažnio ribos arba kvotos?

Nėra kvotų ar griežtos užklausų dažnio ribos. Tik prašome masiškai nesisiųsti viso išklotinių rinkinio: įprastas žemėlapio naudojimas svetainėje ar programėlėje yra visiškai tinkamas.

Ar LFMaps veikia su Leaflet ir MapLibre GL?

Taip. MapLibre GL vektorines išklotines atvaizduoja tiesiogiai, todėl jį rekomenduojame, tačiau Leaflet taip pat veikia su maplibre-gl-leaflet papildiniu.

Iš kur gaunami žemėlapio duomenys?

Iš OpenStreetMap, per OpenFreeMap. Duomenis kuria bendruomenė, todėl jie ir gali likti nemokami.

Ar galiu naudoti LFMaps komercinėje svetainėje?

Taip, paslauga tinka ir komerciniams projektams. Žemėlapyje palikite matomą OpenStreetMap autorystės nuorodą: tai vienintelis reikalavimas.

Ar sekate mano lankytojus?

Ne. Nerenkame asmens duomenų ir išklotinių užklausose neįrašome slapukų, todėl pridėjus žemėlapį nereikia papildyti privatumo politikos.

Kuo tai skiriasi nuo Google Maps ar Mapbox?

Šios paslaugos siūlo nemokamą planą, o jį išaugus ima mokestį už žemėlapio įkėlimus. LFMaps neturi jokio skaitiklio: tiek dešimt, tiek dešimt milijonų žemėlapio peržiūrų kainuoja nulį.