Greasy Fork is available in English.

Google Search Maps Fix

Bring Google maps button back

// ==UserScript==
// @name         Google Search Maps Fix
// @namespace    http://tampermonkey.net/
// @version      2024-03-25
// @description  Bring Google maps button back
// @author       Daan Grashoff / Delivator
// @include      https://www.google.tld/search*
// @icon         https://www.google.com/images/branding/googleg/1x/googleg_standard_color_128dp.png
// @grant        none
// @license      CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
// @homepageURL  https://gist.github.com/Delivator/cbb71fc770b11b02b4269f26d65ce145
// ==/UserScript==

(function () {
    'use strict';

    function addMapsLink() {
        // Find the existing results tabs (Images, News, etc.)
        const tabsContainer = document.querySelector('.crJ18e');
        const mapImage = document.querySelector('#lu_map');

        // Get the search query from the URL
        const searchQuery = new URLSearchParams(window.location.search).get('q');

        // Construct the Maps link with the query
        const mapsLink = `${window.location.origin}/maps?q=${searchQuery}`;

        // If map image exists
        if (mapImage) {
            const anchorElement = document.createElement('a');
            anchorElement.href = mapsLink;
            mapImage.parentNode.insertBefore(anchorElement, mapImage);
            anchorElement.appendChild(mapImage);
        }

        // If tabs exist, proceed
        if (tabsContainer) {
            // Create the Maps button
            const mapsButton = document.createElement('a');
            mapsButton.classList.add('nPDzT', 'T3FoJb');  // Style to match other tabs

            // Create the inner elements for the Maps button
            const mapDiv = document.createElement('div');
            mapDiv.jsname = 'bVqjv';
            mapDiv.classList.add('YmvwI');

            const mapSpan = document.createElement('span');
            mapSpan.classList.add('FMKtTb', 'UqcIvb');
            mapSpan.jsname = 'pIvPIe';
            mapSpan.textContent = 'Maps';

            // Assemble the elements
            mapDiv.appendChild(mapSpan);
            mapsButton.appendChild(mapDiv);
            mapsButton.href = mapsLink;

            // Insert the Maps button at the beginning of the tabs container
            tabsContainer.prepend(mapsButton);
        }

    }

    // Call the function to add the button
    addMapsLink();

})();