????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.25 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.eu/wp-content/themes/Avada/assets/js/ |
Upload File : |
;( function( $, window, document, undefined ) {
'use strict';
var pluginName = 'fusion_maps',
defaults = {
addresses: {},
address_pin: true,
animations: true,
delay: 10, // Delay between each address if over_query_limit is reached
infobox_background_color: false,
infobox_styling: 'default',
infobox_text_color: false,
map_style: 'default',
map_type: 'roadmap',
marker_icon: false,
overlay_color: false,
overlay_color_hsl: {}, // Hue, Saturation, Lightness object
pan_control: true,
show_address: true,
scale_control: true,
scrollwheel: true,
zoom: 9,
zoom_control: true
};
// Plugin Constructor
function Plugin( $element, $options ) {
this.element = $element;
this.settings = $.extend( {}, defaults, $options );
this._defaults = defaults;
this._name = pluginName;
this.geocoder = new google.maps.Geocoder();
this.next_address = 0;
this.infowindow = new google.maps.InfoWindow();
this.markers = [];
this.query_sent = false;
this.last_cache_index = 'none';
this.bounds = new google.maps.LatLngBounds();
this.init();
}
// Avoid Plugin.prototype conflicts
$.extend( Plugin.prototype, {
init: function() {
var mapOptions = {
zoom: this.settings.zoom,
mapTypeId: this.settings.map_type,
scrollwheel: this.settings.scrollwheel,
scaleControl: this.settings.scale_control,
panControl: this.settings.pan_control,
zoomControl: this.settings.zoom_control
},
$latlng, $styles,
$isDraggable = $( document ).width() > 640 ? true : false,
$pluginObject = this,
boundsChanged;
if ( ! this.settings.scrollwheel ) {
mapOptions.draggable = $isDraggable;
}
if ( ! this.settings.address_pin ) {
this.settings.addresses = [ this.settings.addresses[0] ];
}
jQuery.each( this.settings.addresses, function( index ) {
if ( false === this.cache ) {
$pluginObject.last_cache_index = index;
}
});
if ( this.settings.addresses[0].coordinates ) {
$latlng = new google.maps.LatLng( this.settings.addresses[0].latitude, this.settings.addresses[0].longitude );
mapOptions.center = $latlng;
}
this.map = new google.maps.Map( this.element, mapOptions );
if ( this.settings.overlay_color && 'custom' === this.settings.map_style ) {
$styles = [
{
stylers: [
{ hue: this.settings.overlay_color },
{ lightness: this.settings.overlay_color_hsl.lum * 2 - 100 },
{ saturation: this.settings.overlay_color_hsl.sat * 2 - 100 }
]
},
{
featureType: 'road',
elementType: 'geometry',
stylers: [
{ visibility: 'simplified' }
]
},
{
featureType: 'road',
elementType: 'labels'
}
];
this.map.setOptions({
styles: $styles
});
}
// Reset zoom level after adding markers
boundsChanged = google.maps.event.addListener( this.map, 'boundsChanged', function() {
var $latlng = new google.maps.LatLng( $pluginObject.settings.addresses[0].latitude, $pluginObject.settings.addresses[0].longitude );
$pluginObject.map.setZoom( $pluginObject.settings.zoom );
$pluginObject.map.setCenter( $latlng );
google.maps.event.removeListener( boundsChanged );
});
this.next_geocode_request();
},
/**
* Geocoding Addresses
* @param object $search object with address
* @return void
*/
geocode_address: function( $search, index ) {
var $pluginObject = this,
$latLngObject,
$addressObject,
$latitude,
$longitude,
$location,
$cache = true,
$querySent;
if ( 'object' === typeof $search && false === $search.cache ) {
$cache = false;
if ( true === $search.coordinates ) {
$latLngObject = new google.maps.LatLng( $search.latitude, $search.longitude );
$addressObject = { latLng: $latLngObject };
} else {
$addressObject = { address: $search.address };
}
this.geocoder.geocode( $addressObject, function( $results, $status ) {
var $latitude,
$longitude,
$location,
$data;
if ( $status === google.maps.GeocoderStatus.OK ) {
// When coordiantes have been entered, bypass the geocoder results and use specified coordinates
if ( true === $search.coordinates ) {
$location = $latLngObject; // First location
$latitude = jQuery.trim( $search.latitude );
$longitude = jQuery.trim( $search.longitude );
} else {
$location = $results[0].geometry.location; // First location
$latitude = $location.lat();
$longitude = $location.lng();
}
$pluginObject.settings.addresses[ index ].latitude = $latitude;
$pluginObject.settings.addresses[ index ].longitude = $longitude;
if ( true === $search.coordinates && '' === $search.infobox_content ) {
$search.geocoded_address = $results[0].formatted_address;
}
// If first address is not a coordinate, set a center through address
if ( ( 1 === $pluginObject.next_address || '1' === $pluginObject.next_address || true === $pluginObject.next_address ) && ! $search.coordinates ) {
$pluginObject.map.setCenter( $location );
}
if ( $pluginObject.settings.address_pin ) {
$pluginObject.create_marker( $search, $latitude, $longitude );
}
if ( 0 === $pluginObject.next_address || '0' === $pluginObject.next_address || false === $pluginObject.next_address ) {
$pluginObject.map.setCenter( $location );
}
} else {
// If over query limit, go back and try again with a delayed call
if ( $status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT ) {
$pluginObject.next_address--;
$pluginObject.settings.delay++;
}
}
if ( false === $cache && false === $pluginObject.query_sent && $pluginObject.last_cache_index === index ) {
$data = {
action: 'fusion_cache_map',
addresses: $pluginObject.settings.addresses,
security: avadaVars.admin_ajax_nonce
};
jQuery.post( avadaVars.admin_ajax, $data );
$pluginObject.query_sent = true;
}
$pluginObject.next_geocode_request();
});
} else if ( 'object' === typeof $search && true === $search.cache ) {
$latitude = jQuery.trim( $search.latitude );
$longitude = jQuery.trim( $search.longitude );
$location = new google.maps.LatLng( $latitude, $longitude );
if ( true === $search.coordinates && '' === $search.infobox_content ) {
$search.geocoded_address = $search.geocoded_address;
}
if ( $pluginObject.settings.address_pin ) {
$pluginObject.create_marker( $search, $latitude, $longitude );
}
if ( 0 === $pluginObject.next_address || '0' === $pluginObject.next_address || false === $pluginObject.next_address ) {
$pluginObject.map.setCenter( $location );
}
$pluginObject.next_geocode_request();
}
},
create_marker: function( $address, $latitude, $longitude, $location ) {
var $contentString,
$markerSettings = {
position: new google.maps.LatLng( $latitude, $longitude ),
map: this.map
},
$marker;
this.bounds.extend( $markerSettings.position );
if ( $address.infobox_content ) {
$contentString = $address.infobox_content;
} else {
$contentString = $address.address;
// Use google maps suggested address if coordinates were used
if ( true === $address.coordinates && $address.geocoded_address ) {
$contentString = $address.geocoded_address;
}
}
if ( this.settings.animations ) {
$markerSettings.animation = google.maps.Animation.DROP;
}
if ( 'custom' === this.settings.map_style && 'theme' === this.settings.marker_icon ) {
$markerSettings.icon = new google.maps.MarkerImage( $address.marker, null, null, null, new google.maps.Size( 37, 55 ) );
} else if ( 'custom' === this.settings.map_style && $address.marker ) {
$markerSettings.icon = $address.marker;
}
$marker = new google.maps.Marker( $markerSettings );
this.markers.push( $marker );
this.create_infowindow( $contentString, $marker );
if ( this.next_address >= this.settings.addresses.length ) {
this.map.fitBounds( this.bounds );
}
},
create_infowindow: function( $contentString, $marker ) {
var $infoWindow,
$infoBoxDiv,
$infoBoxOptions,
$pluginObject = this;
if ( 'custom' === this.settings.infobox_styling && 'custom' === this.settings.map_style ) {
$infoBoxDiv = document.createElement( 'div' );
$infoBoxOptions = {
content: $infoBoxDiv,
disableAutoPan: true,
maxWidth: 150,
pixelOffset: new google.maps.Size( -125, 10 ),
zIndex: null,
boxStyle: {
background: 'none',
opacity: 1,
width: '250px'
},
closeBoxMargin: '2px 2px 2px 2px',
closeBoxURL: '//www.google.com/intl/en_us/mapfiles/close.gif',
infoBoxClearance: new google.maps.Size( 1, 1 )
};
$infoBoxDiv.className = 'fusion-info-box';
$infoBoxDiv.style.cssText = 'background-color:' + this.settings.infobox_background_color + ';color:' + this.settings.infobox_text_color + ';';
$infoBoxDiv.innerHTML = $contentString;
$infoWindow = new InfoBox( $infoBoxOptions );
$infoWindow.open( this.map, $marker );
if ( ! this.settings.show_address ) {
$infoWindow.close( this.map, $marker );
}
google.maps.event.addListener( $marker, 'click', function() {
var $map = $infoWindow.getMap();
if ( null === $map || 'undefined' === typeof $map ) {
$infoWindow.open( $pluginObject.map, this );
} else {
$infoWindow.close( $pluginObject.map, this );
}
});
} else {
$infoWindow = new google.maps.InfoWindow({
disableAutoPan: true,
content: $contentString
});
if ( this.settings.show_address ) {
$infoWindow.show = true;
$infoWindow.open( this.map, $marker );
}
google.maps.event.addListener( $marker, 'click', function() {
var $map = $infoWindow.getMap();
if ( null === $map || 'undefined' === typeof $map ) {
$infoWindow.open( $pluginObject.map, this );
} else {
$infoWindow.close( $pluginObject.map, this );
}
});
}
},
/**
* Helps with avoiding OVER_QUERY_LIMIT google maps limit
* @return void
*/
next_geocode_request: function() {
var $pluginObject = this;
if ( $pluginObject.next_address < $pluginObject.settings.addresses.length ) {
setTimeout( function() {
$pluginObject.geocode_address( $pluginObject.settings.addresses[$pluginObject.next_address], $pluginObject.next_address );
$pluginObject.next_address++;
}, $pluginObject.settings.delay );
}
}
});
$.fn[ pluginName ] = function( $options ) {
this.each(function() {
if ( ! $.data( this, 'plugin_' + pluginName ) ) {
$.data( this, 'plugin_' + pluginName, new Plugin( this, $options ) );
}
});
return this;
};
})( jQuery, window, document );