You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.0 KiB
88 lines
2.0 KiB
9 months ago
|
/* global google, jQuery */
|
||
|
|
||
|
( function( $, document ) {
|
||
|
'use strict';
|
||
|
|
||
|
/**
|
||
|
* Callback function for Google Maps Lazy Load library to display map
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
function displayMap() {
|
||
|
var $container = $( this ),
|
||
|
options = $container.data( 'map_options' );
|
||
|
|
||
|
var mapOptions = options.js_options,
|
||
|
center = new google.maps.LatLng( options.latitude, options.longitude ),
|
||
|
map;
|
||
|
|
||
|
switch ( mapOptions.mapTypeId ) {
|
||
|
case 'ROADMAP':
|
||
|
mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;
|
||
|
break;
|
||
|
case 'SATELLITE':
|
||
|
mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;
|
||
|
break;
|
||
|
case 'HYBRID':
|
||
|
mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;
|
||
|
break;
|
||
|
case 'TERRAIN':
|
||
|
mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;
|
||
|
break;
|
||
|
}
|
||
|
mapOptions.center = center;
|
||
|
|
||
|
// Typcast zoom to a number
|
||
|
mapOptions.zoom *= 1;
|
||
|
|
||
|
if ( typeof mapOptions.styles === 'string' ) {
|
||
|
mapOptions.styles = JSON.parse(mapOptions.styles);
|
||
|
}
|
||
|
|
||
|
map = new google.maps.Map( this, mapOptions );
|
||
|
|
||
|
// Set marker
|
||
|
if ( options.marker ) {
|
||
|
var marker = new google.maps.Marker( {
|
||
|
position: center,
|
||
|
map: map
|
||
|
} );
|
||
|
|
||
|
// Set marker title
|
||
|
if ( options.marker_title ) {
|
||
|
marker.setTitle( options.marker_title );
|
||
|
}
|
||
|
|
||
|
// Set marker icon
|
||
|
if ( options.marker_icon ) {
|
||
|
marker.setIcon( options.marker_icon );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Set info window
|
||
|
if ( options.info_window ) {
|
||
|
var infoWindow = new google.maps.InfoWindow( {
|
||
|
content: options.info_window,
|
||
|
minWidth: 200
|
||
|
} );
|
||
|
|
||
|
google.maps.event.addListener( marker, 'click', function () {
|
||
|
infoWindow.open( map, marker );
|
||
|
} );
|
||
|
|
||
|
if ( true === mapOptions.openInfoWindow ) {
|
||
|
infoWindow.open( map, marker );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Loop through all map instances and display them
|
||
|
$( '.rwmb-map-canvas' ).each( displayMap );
|
||
|
|
||
|
$( document ).on( 'mb_blocks_preview', function( e ) {
|
||
|
$( e.target )
|
||
|
.find( ".rwmb-map-canvas" )
|
||
|
.each( displayMap );
|
||
|
} );
|
||
|
} )( jQuery, document );
|