var map_generate = false; var map; var markers = []; var infoWindows = []; var imagebase = 'http://www.sageninja.info/inlandph/images/'; (function($) { /* * new_map * * This function will render a Google Map onto the selected jQuery element * * @type function * @date 8/11/2013 * @since 4.3.0 * * @param $el (jQuery element) * @return n/a */ new_map = function ( $el ) { // var var $markers = $el.find('.marker'); // vars var args = { zoom : 10, center : new google.maps.LatLng(0, 0), scrollwheel : false, mapTypeId : google.maps.MapTypeId.ROADMAP, styles: [{ "featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#444444"}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2f2f2"}]},{"featureType":"poi","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"all","stylers":[{"saturation":-100},{"lightness":45}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"all","stylers":[{"color":"#dbdbdb"},{"visibility":"on"}]}] }; // create map map = new google.maps.Map( $el[0], args); // add a markers reference map.markers = []; // add markers $markers.each(function(){ add_marker( $(this), map ); }); // center map center_map( map ); // return return map; } /* * add_marker * * This function will add a marker to the selected Google Map * * @type function * @date 8/11/2013 * @since 4.3.0 * * @param $marker (jQuery element) * @param map (Google Map object) * @return n/a */ function add_marker( $marker, map ) { // var var latlng = new google.maps.LatLng( $marker.attr('data-lat'), $marker.attr('data-lng') ); // create marker var marker = new google.maps.Marker({ position : latlng, map : map, icon : imagebase + 'map-pin.png' }); // add to array 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() }); infoWindows.push(infowindow); infowindow.latlng = marker.position; // Do some actions after infowindow open google.maps.event.addListener(infowindow, 'domready', function() { customInfoWindow(); map.setCenter(infowindow.latlng); map.panBy(0,-250); }); // show info window when marker is clicked google.maps.event.addListener(marker, 'click', function() { closeAllInfoWindow(); infowindow.open( map, marker ); }); } } /* * center_map * * This function will center the map, showing all markers attached to this map * * @type function * @date 8/11/2013 * @since 4.3.0 * * @param map (Google Map object) * @return n/a */ function center_map( map ) { // vars var bounds = new google.maps.LatLngBounds(); // loop through all markers and create bounds $.each( map.markers, function( i, marker ){ var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() ); bounds.extend( latlng ); }); // only 1 marker? if( map.markers.length == 1 ) { // set center of map map.setCenter( bounds.getCenter() ); map.setZoom( 16 ); } else { // fit to bounds map.fitBounds( bounds ); } } function show_location_map() { if (! locationTabMapLoaded) { new_map( $('.acf-map', '#location') ); // locationTabMapLoaded = true; } } /* * document ready * * This function will render each map when the document is ready (page has loaded) * * @type function * @date 8/11/2013 * @since 5.0.0 * * @param n/a * @return n/a */ // global var var locationTabMapLoaded = true; // $(document).ready(function(){ // // $('.acf-map').each(function(){ // // if ($(this).parents('#location').length == 0) { // // create map // map = new_map( $(this) ); // } // // }); // // $('a[href="#location"]').click(show_location_map); // // }); // // $(window).load(function() { // $('div.r-tabs-accordion-title').click(function () { // if ($('.acf-map', '#location').is(':visible')) { // show_location_map(); // } // }); // }); })(jQuery); function customInfoWindow() { // Reference to the DIV which receives the contents of the infowindow using jQuery var iwOuter = $('.gm-style-iw'); /* The DIV we want to change is above the .gm-style-iw DIV. * So, we use jQuery and create a iwBackground variable, * and took advantage of the existing reference to .gm-style-iw for the previous DIV with .prev(). */ var iwBackground = iwOuter.prev(); // Remove the background shadow DIV iwBackground.children(':nth-child(2)').css({'display' : 'none'}); // Remove the white background DIV iwBackground.children(':nth-child(4)').css({'display' : 'none'}); //Custom arrow iwBackground.children(':nth-child(3)').css({top: '412px'}); iwBackground.children(':nth-child(3)').children(':nth-child(1)').css({'top' : '6'}); iwBackground.children(':nth-child(3)').children(':nth-child(1)').children().css({'background-color': '#58595b', 'box-shadow': 'none', 'z-index': '1'}); iwBackground.children(':nth-child(3)').children(':nth-child(2)').css({'top' : '6'}); iwBackground.children(':nth-child(3)').children(':nth-child(2)').children().css({'background-color': '#58595b', 'box-shadow': 'none', 'z-index': '1'}); iwOuter.css({left: '30px', top: '30px'}); var iwCloseBtn = iwOuter.next(); iwCloseBtn.css({'display': 'none'}); } function closeAllInfoWindow () { for(var i = 0; i< infoWindows.length; i++) infoWindows[i].close(); }