A simple reactive wrapper for Geolocation Web API
- Customizable
- Reactive geolocation position
- Simple watcher control
- SSR Compatibility
- GeoJSON output
Install with npm
npm install --save vue-geolocation-api
Install with yarn
yarn add vue-geolocation-api
import Vue from 'vue'
import VueGeolocationApi from 'vue-geolocation-api'
Vue.use(VueGeolocationApi/*, { ...options } */)
Add to modules section at your nuxt.config.js
module.exports = {
modules: [
'vue-geolocation-api/nuxt',
],
geolocation: {
// watch: true,
},
}
export default {
// ...
computed: {
inRange() {
const coords = this.$geolocation.coords
if (!coords) return '?'
return distanceFrom(coords, this.destination) > 150
}
}
}
Note that distanceFrom is not included in this package, if you need this feature I recommend to use with @turf/distance or geo-distance
<template>
<div>
<span v-if="$geolocation.loading">Loading location...</span>
<span v-else-if="!$geolocation.supported">Geolocation API is not supported</span>
<span v-else>Range from destination: {{ inRange ? 'Allowed' : 'Disallowed' }}</span>
</div>
</template>
export default {
// ...
watch: {
inRange(reached) {
if (reached !== true) return
console.log('Congratulations, you arrived')
this.$geolocation.watch = false // Stop watching location
}
}
}
$geolocation.position [Position]
Exposes the results from getCurrentPosition or the last result from watchPosition. Default or unavailable: null
If true, means the location is currently being executed.
If true means the location api is available in the browser. If false means the location api is not available in the browser. if null means the support wasn't verified yet.
$geolocation.coords [Coordinates]
Alias for $geolocation.position.coords
Default or unavailable: null
$geolocation.timestamp [Timestamp]
Alias for $geolocation.position.timestamp
Default or unavailable: null
$geolocation.geoJSON [GeoJSON Point]
Formatted coordinates. Default or unavailable: null
If true will initiate watchPosition
.
If false stop watchPosition
.
This property can be changed dynamically and will react to it's changes.
$geolocation.options [PositionOptions]
Defines the parameters that will be used by getCurrentPosition
and watchPosition
.
Changing this property will trigger an watchPosition
reload if currently watching.
Important: This property is only reactive if you replace it entirely. If you just want to change one options check the method setOption
$geolocation.getCurrentPosition(?options) [Promised Position]
Simply wraps the navigator.geolocation.getCurrentPosition
as a Promise.
Reactively updates the key
property in $geolocation.options
with value
.
Forces the $geolocation.supported
to update.