mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
71 lines
1.7 KiB
JavaScript
Vendored
71 lines
1.7 KiB
JavaScript
Vendored
import {fadeElementIn, isDefined, logError, openUrl} from '../utils/helper';
|
|
import {dispatchEventMarkerClicked} from '../utils/dispatchEvent';
|
|
|
|
const name = 'google';
|
|
|
|
export default {
|
|
name,
|
|
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(element, map, markerData) {
|
|
const {title, lat, lng, url, popup, 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);
|
|
|
|
marker.addListener('click', () => {
|
|
dispatchEventMarkerClicked(name, element, map, marker);
|
|
if (popup) {
|
|
const infoWindow = new window.google.maps.InfoWindow({
|
|
content: popup
|
|
});
|
|
infoWindow.open(map, marker);
|
|
} else if (url) {
|
|
openUrl(url);
|
|
}
|
|
});
|
|
|
|
return marker;
|
|
},
|
|
};
|