Files
gonoware-laravel-maps/resources/js/services/google.js
2020-01-06 19:05:16 +01:00

62 lines
1.4 KiB
JavaScript
Vendored

import {fadeElementIn, isDefined, logError, openUrl} from '../utils/helper';
export default {
NAME: 'google',
createMap(element, mapData) {
if (!isDefined(window.google)) {
logError('google is undefined');
return;
}
if (!isDefined(window.google.maps)) {
logError('google maps is undefined');
return;
}
const {lat, lng, zoom, service} = mapData;
const map = new window.google.maps.Map(element, {
center: new window.google.maps.LatLng(lat, lng),
zoom,
mapTypeId: service.type || window.google.maps.MapTypeId.ROADMAP,
});
window.google.maps.event.addListenerOnce(map, 'idle', () => {
fadeElementIn(element);
});
return map;
},
createMarker(map, markerData) {
const {title, lat, lng, url, icon, iconSize, iconAnchor} = markerData;
const markerOptions = {
position: new window.google.maps.LatLng(lat, lng),
map,
title,
draggable: false,
};
if (icon) {
markerOptions.icon = {
url: icon,
};
if (iconSize) {
markerOptions.icon.size = new window.google.maps.Size(...iconSize);
}
if (iconAnchor) {
markerOptions.icon.anchor = new window.google.maps.Point(...iconAnchor);
}
}
const marker = new window.google.maps.Marker(markerOptions);
if (url) {
marker.addListener('click', () => {
openUrl(url);
});
}
return marker;
},
};