Added heatmap
This commit is contained in:
58
README.md
58
README.md
@@ -141,6 +141,64 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Heatmap
|
||||||
|
If you need to add heatmap layer to the Map, add visualization library in load config and add GMapHeatmap as child of GMapMap component.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { createApp } from 'vue'
|
||||||
|
import VueGoogleMaps from '@fawmi/vue-google-maps'
|
||||||
|
|
||||||
|
const app = createApp(App);
|
||||||
|
app.use(VueGoogleMaps, {
|
||||||
|
load: {
|
||||||
|
key: 'YOUR_API_KEY_COMES_HERE',
|
||||||
|
libraries: "visualization"
|
||||||
|
},
|
||||||
|
}).mount('#app')
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<template>
|
||||||
|
<GMapMap
|
||||||
|
ref="myMapRef"
|
||||||
|
:center="center"
|
||||||
|
:zoom="zoom"
|
||||||
|
style="width: 100%; height: 600px"
|
||||||
|
>
|
||||||
|
<GMapHeatmap :data="heatData"></GMapHeatmap>
|
||||||
|
</GMapMap>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'App',
|
||||||
|
setup() {
|
||||||
|
const center = {lat: 52.2985593, lng: 104.2455337}
|
||||||
|
const zoom = 12
|
||||||
|
const myMapRef = ref();
|
||||||
|
const heatData = ref([])
|
||||||
|
|
||||||
|
watch(myMapRef, googleMap => {
|
||||||
|
if (googleMap) {
|
||||||
|
googleMap.$mapPromise.then(map=> {
|
||||||
|
heatData.value = [
|
||||||
|
{location: new google.maps.LatLng({lat: 52.2985593, lng: 104.2455337})},
|
||||||
|
];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
center,
|
||||||
|
zoom,
|
||||||
|
heatData,
|
||||||
|
myMapRef
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
Checkout docs for more component
|
Checkout docs for more component
|
||||||
|
|
||||||
## Access map object
|
## Access map object
|
||||||
|
|||||||
25
src/components/heatmap.js
Normal file
25
src/components/heatmap.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import buildComponent from './build-component.js'
|
||||||
|
|
||||||
|
const props = {
|
||||||
|
options: {
|
||||||
|
type: Object,
|
||||||
|
twoWay: false,
|
||||||
|
default: () => {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
twoWay: true
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const events = [];
|
||||||
|
|
||||||
|
export default buildComponent({
|
||||||
|
mappedProps: props,
|
||||||
|
name: 'heatmap',
|
||||||
|
ctr: () => google.maps.visualization.HeatmapLayer,
|
||||||
|
events,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@ import Marker from './components/marker.vue'
|
|||||||
import GMapCluster from './components/cluster.vue'
|
import GMapCluster from './components/cluster.vue'
|
||||||
import InfoWindow from './components/infoWindow.vue'
|
import InfoWindow from './components/infoWindow.vue'
|
||||||
import Map from './components/map.vue'
|
import Map from './components/map.vue'
|
||||||
|
import Heatmap from './components/heatmap'
|
||||||
import Autocomplete from './components/autocomplete.vue'
|
import Autocomplete from './components/autocomplete.vue'
|
||||||
|
|
||||||
import MapElementMixin from './components/mapElementMixin'
|
import MapElementMixin from './components/mapElementMixin'
|
||||||
@@ -28,6 +29,7 @@ export {
|
|||||||
InfoWindow,
|
InfoWindow,
|
||||||
Map,
|
Map,
|
||||||
MapElementMixin,
|
MapElementMixin,
|
||||||
|
Heatmap,
|
||||||
buildComponent,
|
buildComponent,
|
||||||
Autocomplete,
|
Autocomplete,
|
||||||
MountableMixin,
|
MountableMixin,
|
||||||
@@ -72,6 +74,7 @@ export default function install(Vue, options) {
|
|||||||
Vue.component('GMapCircle', Circle)
|
Vue.component('GMapCircle', Circle)
|
||||||
Vue.component('GMapRectangle', Rectangle)
|
Vue.component('GMapRectangle', Rectangle)
|
||||||
Vue.component('GMapAutocomplete', Autocomplete)
|
Vue.component('GMapAutocomplete', Autocomplete)
|
||||||
|
Vue.component('GMapHeatmap', Heatmap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user