maplibre-gl-compass
Version:
A heading-up compass for MapLibre GL JS
99 lines (70 loc) • 4.42 kB
Markdown
[](https://badge.fury.io/js/maplibre-gl-compass)
[](https://badge.fury.io/js/maplibre-gl-compass)
[](LICENSE)
A **heading-up** compass for MapLibre GL JS 🧭
This plugin rotates the map based on the values from the [Device orientation events](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events).
Therefore, it can only be used on devices equipped with an orientation sensor, such as mobile devices.
Demo page is [here](https://qazsato.github.io/maplibre-gl-compass).
```sh
npm install maplibre-gl-compass
```
```js
import { Map } from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
import { CompassControl } from 'maplibre-gl-compass'
import 'maplibre-gl-compass/style.css'
const map = new Map({/* YOUR_MAP_OPTION */})
map.addControl(new CompassControl())
```
```js
import { Map } from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
import { CompassControl } from 'maplibre-gl-compass'
import type { CompassEvent, CompassError } from 'maplibre-gl-compass'
import 'maplibre-gl-compass/style.css'
const map = new Map({/* YOUR_MAP_OPTION */})
const compass = new CompassControl({
debug: true, // Show debug view. Default is false.
visible: true, // Show compass button. Default is true.
timeout: 10000, // The maximum time to wait for a DeviceOrientationEvent. Default is 3000 [ms].
})
compass.on('turnon', () => {
// Set pitch when compass is turned on.
map.setPitch(45)
})
compass.on('turnoff', () => {
// Restore pitch and north up when compass is turned off
map.setPitch(0)
map.setBearing(0)
})
compass.on('compass', (event: CompassEvent) => {
// Your custom logic is here!
})
compass.on('error', (event: CompassError) => {
// Your custom logic is here!
})
map.addControl(compass)
```
| name | default | description |
| ------- | ------- | ---------------------------------------------------------- |
| debug | false | Show debug view. |
| visible | true | Show compass button. |
| timeout | 3000 | The maximum time[ms] to wait for a DeviceOrientationEvent. |
| name | description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| turnon | Fired when the compass is turned on. |
| turnoff | Fired when the compass is turned off. |
| error | Fired when the compass cannot be accessed due to permission denied or a timeout. |
| compass | Fired when the device orientation changes. <br> A `heading` number represents the difference between the motion of the device around the z axis of the world system and the direction of the north, expressed in degrees with values ranging from 0 to 360. |
- https://developer.apple.com/documentation/webkitjs/deviceorientationevent
- https://developer.mozilla.org/en-US/docs/Web/API/Window/deviceorientationabsolute_event
This project is licensed under the terms of the [MIT license](https://github.com/qazsato/maplibre-gl-compass/blob/main/LICENSE).