• Stars
    star
    123
  • Rank 290,145 (Top 6 %)
  • Language
    JavaScript
  • License
    ISC License
  • Created over 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This is a binding from MapLibre GL JS to the familiar Leaflet API.

MapLibre GL Leaflet

This is a binding from MapLibre GL JS to the familiar Leaflet API. It was originally developed for Mapbox (https://github.com/mapbox/mapbox-gl-leaflet) and was migrated to MapLibre after Mapbox changed its license.

Code example

var map = L.map('map').setView([38.912753, -77.032194], 15);
L.marker([38.912753, -77.032194])
    .bindPopup("Hello <b>Leaflet GL</b>!<br>Whoa, it works!")
    .addTo(map)
    .openPopup();
var gl = L.maplibreGL({
    style: 'mapbox://styles/mapbox/bright-v8'
}).addTo(map);

Note that you can use any vector tile source useable by maplibre-gl. For instance, you can use OSM2VectorTiles with:

var gl = L.maplibreGL({
	style: 'https://api.maptiler.com/maps/topo/style.json?key=<YOUR_MAPTILER_API_KEY>'
}).addTo(map);

Once you have created the leaflet layer, the maplibre-gl map object can be accessed using

gl.getMaplibreMap()....
// add a source to the maplibre-gl layer
gl.getMaplibreMap().addSource({...})

Live examples

Basic example

Cluster example

Map events example

Code for these examples is hosted in the examples folder

Installation

Add a script tag referencing maplibre-gl-leaflet after adding leaflet and maplibre-gl-js in your website:

<!-- Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>

<!-- Maplibre GL -->
<link href="https://unpkg.com/[email protected]/dist/maplibre-gl.css" rel='stylesheet' />
<script src="https://unpkg.com/[email protected]/dist/maplibre-gl.js"></script>

<script src="https://unpkg.com/@maplibre/[email protected]/leaflet-maplibre-gl.js"></script>

Motivation

This project makes it possible to easily add a maplibre-gl-js layer in your Leaflet map. When using maplibre-gl-leaflet, you won't be able to use some of the maplibre-gl-js features. Here are the main differences between a "pure" maplibre-gl-js map and a Leaflet map using maplibre-gl-leaflet:

  • No rotation / bearing / pitch support
  • Slower performances: When using maplibre-gl-leaflet, maplibre-gl-js is set as not interactive. Leaflet receives the touch/mouse events and updates the maplibre-gl-js map behind the scenes. Because maplibre-gl-js doesn't redraw as fast as Leaflet, the map can seem slower.

On the bright side, the maplibre-gl-leaflet binding will allow you to use all the leaflet features and plugins.

If you only need the maplibre-gl-js features (adding a map with a mapbox-style, adding a GeoJSON, etc.), you are probably better off using it directly.

API Reference

API Reference

Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests. You can fork this jsfiddle template to reproduce a bug, then share the URL of your fork in the GitHub issue.

Licence

ISC Β© MapLibre Β© Mapbox

More Repositories

1

maplibre-gl-js

MapLibre GL JS - Interactive vector tile maps in the browser
TypeScript
6,404
star
2

martin

Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.
Rust
2,231
star
3

maputnik

An open source visual editor for the 'MapLibre Style Specification'
TypeScript
2,094
star
4

maplibre-rs

Experimental Maps for Web, Mobile and Desktop
Rust
1,343
star
5

maplibre-native

MapLibre Native - Interactive vector tile maps for iOS, Android and other platforms.
C++
1,048
star
6

awesome-maplibre

A collection of awesome things that use or support MapLibre!
378
star
7

flutter-maplibre-gl

Customizable, performant and vendor-free vector and raster maps, flutter wrapper for maplibre-native and maplibre-gl-js (fork of flutter-mapbox-gl/maps)
Dart
210
star
8

maplibre-react-native

A MapLibre react native module for creating custom maps
Java
209
star
9

maplibre-tile-spec

Next generation vector tiles format
Java
171
star
10

font-maker

Web app to convert font files into fontstacks for MapLibre GL
TypeScript
161
star
11

maplibre-navigation-android

Maplibre Navigation SDK for Android
Java
91
star
12

demotiles

Demo vector tiles and map style for web, helloworld and CI tests @MapLibre. Hosted directly on GitHub Pages, serverless, no keys.
HTML
74
star
13

maplibre

Documents that span across multiple MapLibre projects
73
star
14

ngx-maplibre-gl

Angular binding of maplibre-gl
TypeScript
73
star
15

maplibre-gl-directions

A plugin to show routing directions on a MapLibre GL JS map
TypeScript
72
star
16

maplibre-style-spec

MapLibre Style Specification & Utilities
TypeScript
66
star
17

mbtileserver-rs

Deprecated mbtiles server in Rust. Use Martin tile server instead.
Rust
61
star
18

maplibre-gl-native-distribution

MapLibre Native for iOS distributed via the Swift Package Manager.
Swift
51
star
19

maplibre-gl-inspect

Maplibre GL Inspect adds an inspect control to maplibre-gl-js to view all features of the vector sources and allows hovering over features to see their properties.
TypeScript
39
star
20

maplibre-native-qt

MapLibre Native Qt Bindings and Qt Location Plugin
C++
38
star
21

maplibre-navigation-ios

MapLibre Navigation SDK for iOS
Swift
36
star
22

maplibre-navigation-android-legacy

Legacy MapLibre Navigation SDK for Android
Java
33
star
23

maplibre-gl-compare

Swipe and sync between two maps
JavaScript
32
star
24

maplibre-gl-js-docs

Deprecated - Docs are in the /docs folder of the maplibre-gl-js repo.
JavaScript
23
star
25

maplibre-plugins-android

MapLibre Native for Android Plugins
Java
22
star
26

maplibre-java

MapLibre Native Android utilities
Java
16
star
27

maplibre.github.io

HTML
13
star
28

maplibre-native-base

MapLibre Native Base C++ Libraries
C++
4
star
29

maplibre-native-android-examples

MapLibre Native Android Examples
3
star
30

workshop

HTML
2
star
31

mvt-cpp

C++ library for decoding MVT files
C++
2
star
32

martin-landing-page

JavaScript
1
star
33

maplibre-gestures-android

The MapLibre Gestures for Android library makes it easy to detect and handle user gestures on an Android device.
Java
1
star
34

homebrew-martin

Homebrew for Martin
Ruby
1
star
35

repo-stats

A repository to get statistics on other maplibre repos
1
star