<?php


add_filter('acf/fields/google_map/api', 'my_acf_google_map_api');
$mapDatas = get_field('map_datas');

?>


<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDZmUF1CrKW2Yl0xKWsm0dMmZfUPOhwd5w&callback=Function.prototype"></script>
<script type="text/javascript">
	(function($) {

		/**
		 * initMap
		 *
		 * Renders a Google Map onto the selected jQuery element
		 *
		 * @date    22/10/19
		 * @since   5.8.6
		 *
		 * @param   jQuery $el The jQuery element.
		 * @return  object The map instance.
		 */
		function initMap($el) {

			// Find marker elements within map.
			var $markers = $el.find('.marker');

			// Create gerenic map.
			var mapArgs = {
				zoom: $el.data('zoom') || 16,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			};
			var map = new google.maps.Map($el[0], mapArgs);

			// Add markers.
			map.markers = [];
			$markers.each(function() {
				initMarker($(this), map);
			});

			// Center map based on markers.
			centerMap(map);

			// Return map instance.
			return map;
		}


		function initMarker($marker, map) {

			// Get position from marker.
			var lat = $marker.data('lat');
			var lng = $marker.data('lng');
			var latLng = {
				lat: parseFloat(lat),
				lng: parseFloat(lng)
			};

			// Create marker instance.
			var marker = new google.maps.Marker({
				position: latLng,
				map: map
			});

			// Append to reference for later use.
			map.markers.push(marker);

			// If marker contains HTML, add it to an infoWindow.
			if ($marker.html()) {

				// Create info window.
				var infowindow = new google.maps.InfoWindow({
					content: $marker.html()
				});

				// Show info window when marker is clicked.
				google.maps.event.addListener(marker, 'click', function() {
					infowindow.open(map, marker);
				});
			}
		}

		/**
		 * centerMap
		 *
		 * Centers the map showing all markers in view.
		 *
		 * @date    22/10/19
		 * @since   5.8.6
		 *
		 * @param   object The map instance.
		 * @return  void
		 */
		function centerMap(map) {

			// Create map boundaries from all map markers.
			var bounds = new google.maps.LatLngBounds();
			map.markers.forEach(function(marker) {
				bounds.extend({
					lat: marker.position.lat(),
					lng: marker.position.lng()
				});
			});

			// Case: Single marker.
			if (map.markers.length == 1) {
				map.setCenter(bounds.getCenter());

				// Case: Multiple markers.
			} else {
				map.fitBounds(bounds);
			}
		}

		// Render maps on page load.
		$(document).ready(function() {
			$('.acf-map').each(function() {
				var map = initMap($(this));
			});
		});

	})(jQuery);
</script>

<section id="<?php echo $block['anchor'] ?>" <?php echo get_block_wrapper_attributes(['class' => 'homegrade-blocks-google-map']); ?>>
	<?php if ($mapDatas) : ?>
		<div class="map_frame acf-map" data-zoom="16">
			<div class="marker" data-lat="<?php echo esc_attr($mapDatas['lat']); ?>" data-lng="<?php echo esc_attr($mapDatas['lng']); ?>"></div>
		</div>
	<?php endif; ?>
</section>