Files
vue-google-maps-community-fork/components/Marker.vue
2021-01-27 12:33:33 +01:00

63 lines
1.1 KiB
Vue

<template>
<div ref="markerRef" >
<slot></slot>
</div>
</template>
<script>
import {inject, ref} from "vue";
export default {
props: {
location: {
required: true
},
infoWindow: {
type: String,
required: false
},
icon: {
required: false
}
},
setup(props) {
const markerRef = ref();
const mapPromise = inject(
"mapPromise"
);
if (mapPromise) {
mapPromise.then((googleMap) => {
const infoWindow = new google.maps.InfoWindow();
const options = {
position: new google.maps.LatLng(
props.location.lat,
props.location.lng
),
map: googleMap
};
if (props.icon) {
options.icon = props.icon
}
const marker = new google.maps.Marker({
...options,
});
marker.addListener("click", (event) => {
infoWindow.setContent(markerRef.value.innerHTML);
infoWindow.open(googleMap, marker);
});
});
}
return {
markerRef,
};
return {};
}
};
</script>