| 
          // ==UserScript== | 
        
        
           | 
          // @name         Google maps addon | 
        
        
           | 
          // @namespace    http://tampermonkey.net/ | 
        
        
           | 
          // @version      2024-03-21 | 
        
        
           | 
          // @description  Bring google maps button back | 
        
        
           | 
          // @author       Daan Grashoff | 
        
        
           | 
          // @homepage     https://gist.github.com/Daan-Grashoff/57c40bc355bcb4d1ebc1290094f57ddf | 
        
        
           | 
          // @match        *://www.google.com/search* | 
        
        
           | 
          // @match        *://google.com/search* | 
        
        
           | 
          // @match        *://www.google.co.uk/search* | 
        
        
           | 
          // @match        *://www.google.nl/search* | 
        
        
           | 
          // @match        *://www.google.de/search* | 
        
        
           | 
          // @match        *://www.google.fr/search* | 
        
        
           | 
          // @match        *://www.google.tld/search* | 
        
        
           | 
          // @run-at       document-start | 
        
        
           | 
          // @icon         https://www.google.com/images/branding/googleg/1x/googleg_standard_color_128dp.png | 
        
        
           | 
          // @grant        none | 
        
        
           | 
          // ==/UserScript== | 
        
        
           | 
          
 | 
        
        
           | 
          (function() { | 
        
        
           | 
              'use strict'; | 
        
        
           | 
          
 | 
        
        
           | 
              const DEBUG = true; | 
        
        
           | 
              function log(...args) { | 
        
        
           | 
                  if (DEBUG) console.log('[Maps Button]', ...args); | 
        
        
           | 
              } | 
        
        
           | 
          
 | 
        
        
           | 
              function addMapsButton() { | 
        
        
           | 
                  log('Attempting to add Maps button...'); | 
        
        
           | 
          
 | 
        
        
           | 
                  // Find the navigation container using multiple possible selectors | 
        
        
           | 
                  const possibleContainers = [ | 
        
        
           | 
                      document.querySelector('div[role="navigation"] div[role="list"]'), | 
        
        
           | 
                      document.querySelector('.MUFPAc'), | 
        
        
           | 
                      document.querySelector('.nfdoRb'), | 
        
        
           | 
                      document.querySelector('.T47uwc'), | 
        
        
           | 
                      document.querySelector('.NZmxZe'), | 
        
        
           | 
                      document.querySelector('.crJ18e') | 
        
        
           | 
                  ]; | 
        
        
           | 
          
 | 
        
        
           | 
                  const tabsContainer = possibleContainers.find(el => el !== null); | 
        
        
           | 
                  if (!tabsContainer) { | 
        
        
           | 
                      log('No navigation container found'); | 
        
        
           | 
                      return; | 
        
        
           | 
                  } | 
        
        
           | 
          
 | 
        
        
           | 
                  // Check if Maps button already exists | 
        
        
           | 
                  if (tabsContainer.querySelector('.maps-button-custom')) { | 
        
        
           | 
                      log('Maps button already exists'); | 
        
        
           | 
                      return; | 
        
        
           | 
                  } | 
        
        
           | 
          
 | 
        
        
           | 
                  // Get the search query | 
        
        
           | 
                  const searchQuery = new URLSearchParams(window.location.search).get('q'); | 
        
        
           | 
                  if (!searchQuery) { | 
        
        
           | 
                      log('No search query found'); | 
        
        
           | 
                      return; | 
        
        
           | 
                  } | 
        
        
           | 
          
 | 
        
        
           | 
                  // Create Maps button | 
        
        
           | 
                  const mapsListItem = document.createElement('div'); | 
        
        
           | 
                  mapsListItem.setAttribute('role', 'listitem'); | 
        
        
           | 
                  mapsListItem.classList.add('maps-button-custom'); | 
        
        
           | 
          
 | 
        
        
           | 
                  const mapsButton = document.createElement('a'); | 
        
        
           | 
                  mapsButton.classList.add('nPDzT'); | 
        
        
           | 
                  mapsButton.classList.add('T3FoJb'); | 
        
        
           | 
                  mapsButton.href = `https://www.google.com/maps/search/${encodeURIComponent(searchQuery)}`; | 
        
        
           | 
          
 | 
        
        
           | 
                  const mapsButtonText = document.createElement('div'); | 
        
        
           | 
                  mapsButtonText.classList.add('YmvwI'); | 
        
        
           | 
                  mapsButtonText.textContent = 'Maps'; | 
        
        
           | 
                  mapsButton.appendChild(mapsButtonText); | 
        
        
           | 
                  mapsListItem.appendChild(mapsButton); | 
        
        
           | 
          
 | 
        
        
           | 
                  // Find the best insertion point | 
        
        
           | 
                  const allTab = tabsContainer.querySelector('[aria-current="page"]')?.closest('[role="listitem"]') || | 
        
        
           | 
                                tabsContainer.querySelector('[role="listitem"]'); | 
        
        
           | 
          
 | 
        
        
           | 
                  if (allTab?.nextSibling) { | 
        
        
           | 
                      tabsContainer.insertBefore(mapsListItem, allTab.nextSibling); | 
        
        
           | 
                  } else { | 
        
        
           | 
                      tabsContainer.appendChild(mapsListItem); | 
        
        
           | 
                  } | 
        
        
           | 
          
 | 
        
        
           | 
                  log('Maps button added successfully'); | 
        
        
           | 
              } | 
        
        
           | 
          
 | 
        
        
           | 
              // Initial load | 
        
        
           | 
              if (document.readyState === 'loading') { | 
        
        
           | 
                  document.addEventListener('DOMContentLoaded', addMapsButton); | 
        
        
           | 
              } else { | 
        
        
           | 
                  addMapsButton(); | 
        
        
           | 
              } | 
        
        
           | 
          
 | 
        
        
           | 
              // Watch for URL changes (Google's dynamic navigation) | 
        
        
           | 
              let lastUrl = location.href; | 
        
        
           | 
              const observer = new MutationObserver(() => { | 
        
        
           | 
                  const currentUrl = location.href; | 
        
        
           | 
                  if (currentUrl !== lastUrl) { | 
        
        
           | 
                      lastUrl = currentUrl; | 
        
        
           | 
                      setTimeout(addMapsButton, 100); | 
        
        
           | 
                  } | 
        
        
           | 
              }); | 
        
        
           | 
          
 | 
        
        
           | 
              observer.observe(document, { subtree: true, childList: true }); | 
        
        
           | 
          
 | 
        
        
           | 
              // Periodic check to ensure button stays present | 
        
        
           | 
              setInterval(() => { | 
        
        
           | 
                  const hasButton = document.querySelector('.maps-button-custom'); | 
        
        
           | 
                  if (!hasButton) { | 
        
        
           | 
                      log('Periodic check - attempting to add button'); | 
        
        
           | 
                      addMapsButton(); | 
        
        
           | 
                  } | 
        
        
           | 
              }, 2000); | 
        
        
           | 
          })(); | 
        
  
Nice! Thanks!