File "pp-google-maps.js"
Full path: /home/kosmetik/public_html/wp-content/plugins/powerpack-elements/assets/js/pp-google-maps.js
File
size: 6.78 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor Back
(function ($) {
'use strict';
var getElementSettings = function ($element) {
var elementSettings = {},
modelCID = $element.data('model-cid');
if ( isEditMode && modelCID ) {
var settings = elementorFrontend.config.elements.data[ modelCID ],
settingsKeys = elementorFrontend.config.elements.keys[ settings.attributes.widgetType || settings.attributes.elType ];
jQuery.each( settings.getActiveControls(), function( controlKey ) {
if ( -1 !== settingsKeys.indexOf( controlKey ) ) {
elementSettings[ controlKey ] = settings.attributes[ controlKey ];
}
} );
} else {
elementSettings = $element.data('settings') || {};
}
return elementSettings;
};
var isEditMode = false;
var MapHandler = function ($scope, $) {
var map_elem = $scope.find('.pp-google-map').eq(0),
elementSettings = getElementSettings( $scope ),
locations = map_elem.data('locations'),
zoom = (map_elem.data('zoom') !== '') ? map_elem.data('zoom') : 4,
zoomType = (map_elem.data('zoomtype') !== '') ? map_elem.data('zoomtype') : 'auto',
map_type = (elementSettings.map_type !== '') ? elementSettings.map_type : 'roadmap',
streeview_control = (elementSettings.map_option_streeview === 'yes') ? true : false,
map_type_control = (elementSettings.map_type_control === 'yes') ? true : false,
zoom_control = (elementSettings.zoom_control === 'yes') ? true : false,
fullscreen_control = (elementSettings.fullscreen_control === 'yes') ? true : false,
scroll_zoom = (elementSettings.map_scroll_zoom === 'yes') ? 'auto' : 'none',
map_style = (map_elem.data('custom-style') !== '') ? map_elem.data('custom-style') : '',
animation = (elementSettings.marker_animation !== '') ? elementSettings.marker_animation : '',
iw_max_width = (map_elem.data('iw-max-width') !== '') ? map_elem.data('iw-max-width') : '',
mapOptions = '',
marker_animation = '',
i = '';
if ( animation === 'drop' ) {
marker_animation = google.maps.Animation.DROP;
} else if ( animation === 'bounce' ) {
marker_animation = google.maps.Animation.BOUNCE;
}
(function initMap() {
var latlng = new google.maps.LatLng(locations[0][0], locations[0][1]);
mapOptions = {
zoom: zoom,
center: latlng,
mapTypeId: map_type,
mapTypeControl: map_type_control,
streetViewControl: streeview_control,
zoomControl: zoom_control,
fullscreenControl: fullscreen_control,
gestureHandling: scroll_zoom,
styles: map_style
};
var map = new google.maps.Map($scope.find('.pp-google-map')[0], mapOptions),
infowindow = new google.maps.InfoWindow(),
bounds = new google.maps.LatLngBounds();
for (i = 0; i < locations.length; i++) {
var icon = '',
lat = locations[i][0],
lng = locations[i][1],
info_win = locations[i][2],
title = locations[i][3],
description = locations[i][4],
icon_type = locations[i][5],
icon_url = locations[i][6],
icon_size = locations[i][7],
iw_on_load = locations[i][8];
if ( lat.length !== '' && lng.length !== '' ) {
if ( icon_type === 'custom' ) {
icon_size = parseInt(icon_size, 10);
icon = {
url: icon_url
};
if( ! isNaN( icon_size ) ) {
icon.scaledSize = new google.maps.Size( icon_size, icon_size );
icon.origin = new google.maps.Point( 0, 0 );
icon.anchor = new google.maps.Point( icon_size/2, icon_size );
}
}
if ( 'auto' === zoomType ) {
var loc = new google.maps.LatLng(lat, lng);
bounds.extend(loc);
map.fitBounds(bounds);
}
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
map: map,
title: title,
icon: icon,
animation: marker_animation
});
if ( info_win === 'yes' && iw_on_load === 'iw_open' ) {
var contentString = '<div class="pp-infowindow-content">';
contentString += '<div class="pp-infowindow-title">'+title+'</div>';
if ( description.length !== '' ) {
contentString += '<div class="pp-infowindow-description">'+description+'</div>';
}
contentString += '</div>';
if ( iw_max_width !== '' ) {
var max_width = parseInt( iw_max_width, 10 );
infowindow = new google.maps.InfoWindow({
content: contentString,
maxWidth: max_width
} );
} else {
infowindow = new google.maps.InfoWindow({
content: contentString
} );
}
infowindow.open(map, marker);
}
// Event that closes the Info Window with a click on the map
google.maps.event.addListener(map, 'click', (function(infowindow) {
return function() {
infowindow.close();
};
})(infowindow));
if ( info_win === 'yes' && locations[i][3] !== '' ) {
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
var contentString = '<div class="pp-infowindow-content">';
contentString += '<div class="pp-infowindow-title">'+locations[i][3]+'</div>';
if ( locations[i][3].length !== '' ) {
contentString += '<div class="pp-infowindow-description">'+locations[i][4]+'</div>';
}
contentString += '</div>';
infowindow.setContent(contentString);
if ( iw_max_width !== '' ) {
var max_width = parseInt( iw_max_width, 10 );
var InfoWindowOptions = { maxWidth : max_width };
infowindow.setOptions( { options:InfoWindowOptions } );
}
infowindow.open(map, marker);
};
})(marker, i));
}
}
}
})();
};
$(window).on('elementor/frontend/init', function () {
if ( elementorFrontend.isEditMode() ) {
isEditMode = true;
}
elementorFrontend.hooks.addAction('frontend/element_ready/pp-google-maps.default', MapHandler);
});
}(jQuery));