How to add Youtube Embed Modal to Google Map
CHALLENGE: Clicking ‘read more’ inside the infobox Google Map window should open a lightbox with a YouTube embedded video.
SOLUTION: Configure Magnific Popup and add a custom javascript onclick event.
A short description or a photo can be very informative, but a video surely adds a dynamic touch to an otherwise static image of a Google Map. Here is how we do it.
Let’s say, there is a Google Map with markers. After clicking, an infobox, a window appears and provides the details – a description and a ‘Read more’ button. We want to add a modal with a YouTube embedded video, but this is a tricky one. The infobox window is generated dynamically, thus, standard javascript initialization will not work.
We are using ‘WP Google Map Pro’ plugin – version 5.2.7, but this solution can also be applied for standalone Google Map javascript implementation.
Solution
Add proper infobox HTML markup
<div class="fc-item-box fc-item-no-padding"> {post_featured_image} <div class="fc-itemcontent-padding"> <div class="fc-item-padding-content_20"> <div class="fc-item-meta fc-item-secondary-text-color fc-item-top-space fc-text-center">{post_categories}</div> <div class="fc-item-title fc-item-primary-text-color fc-text-center">{post_title}</div> <div class="fc-item-content fc-item-body-text-color fc-item-top-space"> {post_excerpt} <a class="marker-link js-video" href="{%url%}" onclick="ctShowVideoInModal(this); return false;">{%label%}</a> </div> </div> </div> </div>
Now, add a custom javascript to trigger the modal
function ctShowVideoInModal(obj){ var link = obj.getAttribute("href"); if(! obj.classList.contains("js-video")){ window.location.href = link; return false; } jQuery.magnificPopup.open({ items: { src: link, }, disableOn: 0, type: 'iframe', mainClass: 'mfp-fade', removalDelay: 160, preloader: false, fixedContentPos: false }); return false; }
Done! From now on, after clicking ‘Read more’ – the embedded modal will appear.
Follow us for other useful tips and guidelines.