balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

map-frontend.js (1849B)


      1 /* global google, jQuery */
      2 
      3 jQuery( function ( $ ) {
      4 	'use strict';
      5 
      6 	/**
      7 	 * Callback function for Google Maps Lazy Load library to display map
      8 	 *
      9 	 * @return void
     10 	 */
     11 	function displayMap() {
     12 		var $container = $( this ),
     13 			options = $container.data( 'map_options' );
     14 
     15 		var mapOptions = options.js_options,
     16 			center = new google.maps.LatLng( options.latitude, options.longitude ),
     17 			map;
     18 
     19 		switch ( mapOptions.mapTypeId ) {
     20 			case 'ROADMAP':
     21 				mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;
     22 				break;
     23 			case 'SATELLITE':
     24 				mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;
     25 				break;
     26 			case 'HYBRID':
     27 				mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;
     28 				break;
     29 			case 'TERRAIN':
     30 				mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;
     31 				break;
     32 		}
     33 		mapOptions.center = center;
     34 
     35 		// Typcast zoom to a number
     36 		mapOptions.zoom *= 1;
     37 
     38 		if ( typeof mapOptions.styles === 'string' ) {
     39 			mapOptions.styles = JSON.parse(mapOptions.styles);
     40 		}
     41 
     42 		map = new google.maps.Map( this, mapOptions );
     43 
     44 		// Set marker
     45 		if ( options.marker ) {
     46 			var marker = new google.maps.Marker( {
     47 				position: center,
     48 				map: map
     49 			} );
     50 
     51 			// Set marker title
     52 			if ( options.marker_title ) {
     53 				marker.setTitle( options.marker_title );
     54 			}
     55 
     56 			// Set marker icon
     57 			if ( options.marker_icon ) {
     58 				marker.setIcon( options.marker_icon );
     59 			}
     60 		}
     61 
     62 		// Set info window
     63 		if ( options.info_window ) {
     64 			var infoWindow = new google.maps.InfoWindow( {
     65 				content: options.info_window,
     66 				minWidth: 200
     67 			} );
     68 
     69 			google.maps.event.addListener( marker, 'click', function () {
     70 				infoWindow.open( map, marker );
     71 			} );
     72 
     73 			if ( true === mapOptions.openInfoWindow ) {
     74 				infoWindow.open( map, marker );
     75 			}
     76 		}
     77 	}
     78 
     79 	// Loop through all map instances and display them
     80 	$( '.rwmb-map-canvas' ).each( displayMap );
     81 } );