File: /var/www/html/bwcsports-site/wp-content/themes/salient/js/map.js
/**
* Salient Google Maps script file.
*
* @package Salient
* @author ThemeNectar
*/
/* global google */
/* global nectarLove */
Object.keys = Object.keys || function(o) {
var result = [];
for(var name in o) {
if (o.hasOwnProperty(name))
result.push(name);
}
return result;
};
(function($) {
"use strict";
jQuery(document).ready(function($){
var enableAnimation,
extraColor,
greyscale,
enableZoom,
enableZoomConnect,
markerImg,
centerlng,
centerlat,
zoomLevel,
latLng;
var map = [],
styles = [],
infoWindows = [];
window.mapAPI_Loaded = function() {
for(var i = 0; i < $('.nectar-google-map').length; i++) {
infoWindows[i] = [];
}
$('.nectar-google-map').each(function(i){
//map margin if page header
if( $('#page-header-bg:not("[data-parallax=1]")').length > 0 && $('#contact-map').length > 0 ) {
$('#contact-map').css('margin-top', 0);
$('.container-wrap').css('padding-top', 0);
}
if( $('#page-header-bg[data-parallax=1]').length > 0 ) {
$('#contact-map').css('margin-top', '-30px');
}
zoomLevel = parseFloat($(this).attr('data-zoom-level'));
centerlat = parseFloat($(this).attr('data-center-lat'));
centerlng = parseFloat($(this).attr('data-center-lng'));
markerImg = $(this).attr('data-marker-img');
enableZoom = $(this).attr('data-enable-zoom');
enableZoomConnect = (enableZoom == '1') ? false : true;
greyscale = $(this).attr('data-greyscale');
extraColor = $(this).attr('data-extra-color');
var ultraFlat = $(this).attr('data-ultra-flat');
var darkColorScheme = $(this).attr('data-dark-color-scheme');
var $flatObj = [];
var $darkColorObj = [];
enableAnimation = $(this).attr('data-enable-animation');
if( isNaN(zoomLevel) ) {
zoomLevel = 12;
}
if( isNaN(centerlat) ) {
centerlat = 51.47;
}
if( isNaN(centerlng) ) {
centerlng = -0.268199;
}
if( typeof enableAnimation != 'undefined' && enableAnimation == 1 && $(window).width() > 690) {
enableAnimation = google.maps.Animation.BOUNCE;
} else {
enableAnimation = null;
}
latLng = new google.maps.LatLng(centerlat,centerlng);
//color
if(ultraFlat == '1') {
$flatObj = [{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{ "visibility": "off" }
]
},
{
"elementType": "labels",
"stylers": [
{ "visibility": "off" }
]
},
{
"featureType": "administrative",
"stylers": [
{ "visibility": "off" }
]
}];
} else {
$flatObj[0] = {};
$flatObj[1] = {};
$flatObj[2] = {};
}
if(darkColorScheme == '1') {
$darkColorObj = [{
"featureType": "all",
"elementType": "labels.text.fill",
"stylers": [
{
"saturation": 36
},
{
"color": "#000000"
},
{
"lightness": 40
}
]
},
{
"featureType": "all",
"elementType": "labels.text.stroke",
"stylers": [
{
"visibility": "on"
},
{
"color": "#000000"
},
{
"lightness": 16
}
]
},
{
"featureType": "all",
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "administrative",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 20
}
]
},
{
"featureType": "administrative",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 17
},
{
"weight": 1.2
}
]
},
{
"featureType": "landscape",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 20
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 21
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 17
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 29
},
{
"weight": 0.2
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 18
}
]
},
{
"featureType": "road.local",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 16
}
]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 19
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#000000"
},
{
"lightness": 17
}
]
}];
} else {
$darkColorObj[0] = {};
$darkColorObj[1] = {};
$darkColorObj[2] = {};
$darkColorObj[3] = {};
$darkColorObj[4] = {};
$darkColorObj[5] = {};
$darkColorObj[6] = {};
$darkColorObj[7] = {};
$darkColorObj[8] = {};
$darkColorObj[9] = {};
$darkColorObj[10] = {};
$darkColorObj[11] = {};
$darkColorObj[12] = {};
}
if(greyscale == '1' && extraColor.length > 0) {
styles = [
{
featureType: "poi",
elementType: "labels",
stylers: [{
visibility: "off"
}]
},
{
featureType: "road.local",
elementType: "labels.icon",
stylers: [{
"visibility": "off"
}]
},
{
featureType: "road.arterial",
elementType: "labels.icon",
stylers: [{
"visibility": "off"
}]
},
{
featureType: "road",
elementType: "geometry.stroke",
stylers: [{
visibility: "off"
}]
},
{
featureType: "transit",
elementType: "geometry.fill",
stylers: [
{ hue: extraColor },
{ visibility: "on" },
{ lightness: 1 },
{ saturation: 7 }
]
},
{
elementType: "labels",
stylers: [{
saturation: -100,
}]
},
{
featureType: "poi",
elementType: "geometry.fill",
stylers: [
{ hue: extraColor },
{ visibility: "on" },
{ lightness: 20 },
{ saturation: 7 }
]
},
{
featureType: "landscape",
stylers: [
{ hue: extraColor },
{ visibility: "on" },
{ lightness: 20 },
{ saturation: 20 }
]
},
{
featureType: "road",
elementType: "geometry.fill",
stylers: [
{ hue: extraColor },
{ visibility: "on" },
{ lightness: 1 },
{ saturation: 7 }
]
},
{
featureType: "water",
elementType: "geometry",
stylers: [
{ hue: extraColor },
{ visibility: "on" },
{ lightness: 1 },
{ saturation: 7 }
]
},
$darkColorObj[0],
$darkColorObj[1],
$darkColorObj[2],
$darkColorObj[3],
$darkColorObj[4],
$darkColorObj[5],
$darkColorObj[6],
$darkColorObj[7],
$darkColorObj[8],
$darkColorObj[9],
$darkColorObj[10],
$darkColorObj[11],
$darkColorObj[12],
$flatObj[0],
$flatObj[1],
$flatObj[2]
];
}
else if(greyscale == '1'){
styles = [
{
featureType: "poi",
elementType: "labels",
stylers: [{
visibility: "off"
}]
},
{
featureType: "road.local",
elementType: "labels.icon",
stylers: [{
"visibility": "off"
}]
},
{
featureType: "road.arterial",
elementType: "labels.icon",
stylers: [{
"visibility": "off"
}]
},
{
featureType: "road",
elementType: "geometry.stroke",
stylers: [{
visibility: "off"
}]
},
{
elementType: "geometry",
stylers: [{
saturation: -100
}]
},
{
elementType: "labels",
stylers: [{
saturation: -100
}]
},
{
featureType: "poi",
elementType: "geometry.fill",
stylers: [{
color: "#ffffff"
}]
},
{
featureType: "landscape",
stylers: [{
color: "#ffffff"
}]
},
{
featureType: "road",
elementType: "geometry.fill",
stylers: [ {
color: "#f1f1f1"
}]
},
{
featureType: "water",
elementType: "geometry",
stylers: [{
color: "#b9e7f4"
}]
},
$darkColorObj[0],
$darkColorObj[1],
$darkColorObj[2],
$darkColorObj[3],
$darkColorObj[4],
$darkColorObj[5],
$darkColorObj[6],
$darkColorObj[7],
$darkColorObj[8],
$darkColorObj[9],
$darkColorObj[10],
$darkColorObj[11],
$darkColorObj[12],
$flatObj[0],
$flatObj[1],
$flatObj[2]
];
}
else {
styles = [];
}
var styledMap = new google.maps.StyledMapType(styles,
{name: "Styled Map"});
//options
var mapOptions = {
center: latLng,
zoom: zoomLevel,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
},
scrollwheel: false,
panControl: false,
zoomControl: enableZoom,
disableDoubleClickZoom: enableZoomConnect,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.LEFT_CENTER
},
mapTypeControl: false,
scaleControl: false,
streetViewControl: false
};
map[i] = new google.maps.Map(document.getElementById($(this).attr('id')), mapOptions);
//Associate the styled map with the MapTypeId and set it to display.
map[i].mapTypes.set('map_style', styledMap);
map[i].setMapTypeId('map_style');
var $count = i;
google.maps.event.addListenerOnce(map[i], 'tilesloaded', function() {
var map_id = $(map[i].getDiv()).attr('id');
//don't start the animation until the marker image is loaded if there is one
if(markerImg.length > 0) {
var markerImgLoad = new Image();
markerImgLoad.src = markerImg;
$(markerImgLoad).load(function(){
setMarkers(map[i], map_id, $count);
});
}
else {
setMarkers(map[i], map_id, $count);
}
});
});
//watcher to resize gmap inside grow-in animatino col
var $gMapsAnimatedSelector = $('.col.has-animation[data-animation="grow-in"] .nectar-google-map');
var gMapsInterval = [];
$gMapsAnimatedSelector.each(function(i){
var $that = $(this);
//watcher
gMapsInterval[i] = setInterval(function(){
if($that.parents('.col.has-animation[data-animation="grow-in"]').hasClass('animated-in')) {
for(var k=0; k < map.length; k++ ) {
google.maps.event.trigger(map[k], 'resize');
}
//clear watcher
setTimeout(function(){
clearInterval(gMapsInterval[i]);
},1000);
}
},500);
});
CustomMarker.prototype = new google.maps.OverlayView();
CustomMarker.prototype.draw = function() {
var me = this;
var div = this.div_;
if (!div) {
div = this.div_ = $('' +
'<div><div class="animated-dot">' +
'<div class="middle-dot"></div>' +
'<div class="signal"></div>' +
'<div class="signal2"></div>' +
'</div></div>' +
'')[0];
div.style.position = 'absolute';
div.style.paddingLeft = '0px';
div.style.cursor = 'pointer';
var panes = this.getPanes();
panes.overlayImage.appendChild(div);
}
var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
if (point) {
div.style.left = point.x + 'px';
div.style.top = point.y + 'px';
}
//infowindow
google.maps.event.addDomListener(div, "click", function(event) {
infoWindows[me.mapIndex][me.infoWindowIndex].setPosition(me.latlng_);
infoWindows[me.mapIndex][me.infoWindowIndex].open(me.map);
});
};
CustomMarker.prototype.remove = function() {
// Check if the overlay was on the map and needs to be removed.
if (this.div_) {
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
}
};
CustomMarker.prototype.getPosition = function() {
return this.latlng_;
};
}; //api loaded
if(typeof google === 'object' && typeof google.maps === 'object') {
//skip processing.
} else {
if(nectarLove.mapApiKey.length > 0) {
$.getScript('https://maps.googleapis.com/maps/api/js?sensor=false&key='+nectarLove.mapApiKey+'&callback=mapAPI_Loaded');
} else {
$.getScript('https://maps.googleapis.com/maps/api/js?sensor=false&callback=mapAPI_Loaded');
}
}
function CustomMarker(latlng, map, PARAM1, PARAM2) {
this.latlng_ = latlng;
this.infoWindowIndex = PARAM1;
this.mapIndex = PARAM2;
this.setMap(map);
}
function setMarkers(map,map_id,count) {
$('.map-marker-list.'+map_id).each(function(){
var enableAnimation = $('#'+map_id).attr('data-enable-animation');
$(this).find('.map-marker').each(function(i){
//nectar marker
if($('#'+map_id).is('[data-marker-style="nectar"]')) {
var latlng = new google.maps.LatLng($(this).attr('data-lat'), $(this).attr('data-lng'));
var overlay = new CustomMarker(latlng, map, i, count);
}
var marker = new google.maps.Marker({
position: new google.maps.LatLng($(this).attr('data-lat'), $(this).attr('data-lng')),
map: map,
visible: false,
mapIndex: count,
infoWindowIndex : i,
icon: $('#'+map_id).attr('data-marker-img'),
optimized: false
});
//google default marker
if(!$('#'+map_id).is('[data-marker-style="nectar"]')) {
//animation
if(typeof enableAnimation != 'undefined' && enableAnimation == 1 && $(window).width() > 690) {
setTimeout(function() {
marker.setAnimation(google.maps.Animation.BOUNCE);
marker.setOptions({ visible: true });
setTimeout(function(){marker.setAnimation(null);},500);
}, i * 200);
} else {
marker.setOptions({ visible: true });
}
}
//infowindows
if($(this).attr('data-mapinfo') != '' && $(this).attr('data-mapinfo') != '<br />' && $(this).attr('data-mapinfo') != '<br/>') {
var infowindow = new google.maps.InfoWindow({
content: $(this).attr('data-mapinfo'),
maxWidth: 300
});
infoWindows[count].push(infowindow);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infoWindows[this.mapIndex][this.infoWindowIndex].open(map, this);
};
})(marker, i));
}
});
});
}//setMarker
});
})(jQuery);