vuejs-google-map
Google Map components and integration for VueJs
This package is under active development, the documentation is not complete yet, so if is missing something open a
request or look at the source code.
Installation
npm i vuejs-google-maps
yarn add vuejs-google-maps
Usage
Before starting you need a Google API key from the developer console, once you
obtained your key, import the module in your application and register it as plugin:
import Vue from 'vue'
import VueGoogleMap from 'vuejs-google-maps'
Vue.use(VueGoogleMap, {
load: {
apiKey: 'your-api-key',
libraries: []
}
})
♻️ Usage with Nuxt.js
Add vuejs-google-maps/nuxt
to modules section of nuxt.config.js
export default {
modules: [
'vuejs-google-maps/nuxt',
['vuejs-google-maps/nuxt', {api: 'xxxxxx', libraries: []}]
],
googleMaps: {api: 'xxxxxx', libraries: []}
}
This module tries to map GoogleMap with Vue components as much as possible so any of the options available on the
original GoogleMap class will be available as component props and all the events emitted will be mapped to component
events.
Components
Here a list of the available components that you can use with this plugin, click on them to discover more about the
usage and see examples. If you are interested to see a real life use checkout
the example folder which contains the source code
of the website.
Marker
The Google Map Marker element require to be inside a <google-map>
component., it support the default slot.
<template>
<google-map-marker
title="String"
label="String|Object"
clickable="Boolean"
draggable="Boolean"
visible="Boolean"
z-index="Number"
click="Function"
dblclick="Function"
rightclick="Function"
drag="Function"
dragstart="Function"
dragend="Function"
mouseup="Function"
mousedown="Function"
mouseover="Function"
mouseout="Function"
/>
</template>
AutoComplete
The AutoComplete component does not require to be inside a <google-map>
component, it can be used anyway inside your
app. It display an input and optionally the autocomplete controls, when a place is selected the place-changed event
is triggered with the result.
<template>
<google-map-autocomplete
model="String"
types="Array"
controls="Boolean"
update-map="Boolean"
place-changed="Function"
/>
</template>
Update V 0.0.6
<template>
<div class="info-windows">
<google-map id="map" ref="Map">
<google-map-marker
:key="index"
v-for="(infoWindow, index) in infoWindowsList"
:position="infoWindow.position"
:key="index"
@click="toggleInfoWindow(infoWindow)"
/>
<google-map-infowindow
:position="infoWIndowContext.position"
:show.sync="showInfo"
:options="{maxWidth: 300}"
@info-window-clicked="infoClicked"
>
<h4>{{infoWindowContext.title}}</h4>
<p>{{infoWindowContext.description}}</p>
</google-map-infowindow>
</google-map>
</div>
</template>
<script>
import cities from '~/assets/cities.json'
export default {
data() {
return {
showInfo: false,
infoWindowContext: {
position: {
lat: 44.2899,
lng: 11.8774
}
},
infoWindowsList: cities
}
},
methods: {
toggleInfoWindow(context) {
this.infoWIndowContext = context
this.showInfo = true
},
infoClicked(context) {
console.log(context)
}
}
}
</script>
Added
@info-window-clicked($event) to info-windows
Development
If you want to contribute in the development clone or fork the repository, than install all the dependencies:
npm install
yarn install
Create a .env
file containing the VUE_APP_GOOGLE_APIKEY variable with your valid API key:
VUE_APP_GOOGLE_APIKEY=my-apy-key
License
This package is under the MIT License.