vue-maplibre-gl
vue-maplibre-gl
A small Vue 3 plugin for maplibre-gl-js. Only additional dependency is mitt.
Features
- Supports MapLibre GL JS v5.x
- Typescript support
- Components for map, controls, sources, markers and layers
- ⚠ NEW: Simple Draw Control to draw: polygon, circle and circle (static to camera viewport)
- Support for custom controls
- Customizable style switch which reloads sources and layers automatically
- Frame rate control included
- Support for multiple instances and global access by
useMap(key: string | symbol) - Simple way to switch displayed map language
- Automatic restart on CONTEXT_LOST_WEBGL which can happen on mobile devices when tab was in background for longer time
- Small size
Table of contents
Installation
yarn add vue-maplibre-gl maplibre-gl mitt
Default import
Global Install:
import VueMaplibreGl from 'vue-maplibre-gl'
app.use(VueMaplibreGl)
Add CSS:
@use "~maplibre-gl/dist/maplibre-gl.css";
@use "~vue-maplibre-gl/dist/vue-maplibre-gl.css";
@use "~vue-maplibre-gl/dist/vue-maplibre-gl-draw.css"; /* optional: only needed for draw component */
Use specific components:
import { MglMap } from 'vue-maplibre-gl'
app.component('MglMap', MglMap)
or in a parent components .vue file
<script>
import { MglMap } from 'vue-maplibre-gl'
export default {
components: {
MglMap
},
// ...
}
</script>
Draw Plugin
Draw Plugin adds few dependencies from Turf.js. That's all.
Features
- draw/edit polygon
- draw/edit circle like polygon or viewport drag/zoom
- visualize area below minimal area size (in m²)
Usage
Add CSS:
@use "~vue-maplibre-gl/dist/vue-maplibre-gl-draw.css";
<template>
<mgl-map>
<mgl-draw-control v-model="myDrawModel"/>
</mgl-map>
</template>
You can use the draw plugin without using the MglDrawComponent. See src/components/controls/draw.control.ts to get an example.
Modes
Polygon
Circle
Circle Static
This mode uses a circle which behaves static to camera viewport. Can be very handy for usage on smartphones.
Styling Polygon and Circle Mode
There is a default style used which can be found in src/plugins/draw/styles.ts. To customize the design when drawing polygon or circle, you can set your own by:
<template>
<mgl-map>
<mgl-draw-control :style="myCustomStyle"/>
</mgl-map>
</template>
Styling Circle Static Mode
The draw component automatically uses padding settings from fitBoundsOptions of map instance. If you want to set them manually, you can do this by:
.maplibregl-draw-circle-mode {
top: 50px;
right: 50px;
bottom: 50px;
left: 50px;
}
Custom colors for static circle mode can be set by:
.maplibregl-draw-circle-mode-circle {
background: rgba(231, 75, 60, 0.2);
border: 2px solid #e74b3c;
}
See src/plugins/draw/draw.plugin.scss for more details to style your own static circle mode.
Usage
See dev/App.vue for a real world example.
Demo
git clone https://github.com/razorness/vue-maplibre-gl.git
cd vue-maplibre-gl
yarn
yarn dev
License
Related Packages
A lightweight calendar heatmap Vue 3 component built on SVG, inspired by julienr...
A lightweight calendar heatmap Vue 3 component built on SVG, inspired by julienr...
Version History
| Version | Released | License |
|---|---|---|
| 5.6.1 | MIT | |
| 5.6.0 | MIT | |
| 5.5.9 | MIT | |
| 5.5.8 | MIT | |
| 5.5.7 | MIT | |
| 5.5.6 | MIT | |
| 5.5.5 | MIT | |
| 5.5.4 | MIT | |
| 5.5.3 | MIT | |
| 5.5.2 | MIT | |
| 5.5.1 | MIT | |
| 5.5.0 | MIT | |
| 5.4.10 | MIT | |
| 5.4.9 | MIT | |
| 5.4.8 | MIT | |
| 5.4.7 | MIT | |
| 5.4.6 | MIT | |
| 5.4.5 | MIT | |
| 5.4.4 | MIT | |
| 5.4.3 | MIT | |
| 5.4.2 | MIT | |
| 5.4.1 | MIT | |
| 5.4.0 | MIT | |
| 5.3.8 | MIT | |
| 5.3.7 | MIT | |
| 5.3.6 | MIT | |
| 5.3.5 | MIT | |
| 5.3.4 | MIT | |
| 5.3.3 | MIT | |
| 5.3.2 | MIT |
Showing the latest 30 of 55. See every release on npm
Pre-releases (34)
| Version | Released | License |
|---|---|---|
| 3.1.2-alpha.2 | MIT | |
| 3.1.2-alpha.1 | MIT | |
| 2.0.0-alpha.6 | MIT | |
| 2.0.0-alpha.5 | MIT | |
| 2.0.0-alpha.4 | MIT | |
| 2.0.0-alpha.3 | MIT | |
| 2.0.0-alpha.2 | MIT | |
| 2.0.0-alpha.1 | MIT | |
| 1.0.0-beta.26 | MIT | |
| 1.0.0-beta.25 | MIT | |
| 1.0.0-beta.24 | MIT | |
| 1.0.0-beta.23 | MIT | |
| 1.0.0-beta.22 | MIT | |
| 1.0.0-beta.21 | MIT | |
| 1.0.0-beta.20 | MIT | |
| 1.0.0-beta.19 | MIT | |
| 1.0.0-beta.18 | MIT | |
| 1.0.0-beta.17 | MIT | |
| 1.0.0-beta.16 | MIT | |
| 1.0.0-beta.15 | MIT | |
| 1.0.0-beta.14 | MIT | |
| 1.0.0-beta.13 | MIT | |
| 1.0.0-beta.12 | MIT | |
| 1.0.0-beta.11 | MIT | |
| 1.0.0-beta.10 | MIT | |
| 1.0.0-beta.9 | MIT | |
| 1.0.0-beta.8 | MIT | |
| 1.0.0-beta.7 | MIT | |
| 1.0.0-beta.6 | MIT | |
| 1.0.0-beta.5 | MIT |
Showing the latest 30 of 34. See every release on npm