Google Search Maps Fix

Makes small map clickable again

目前為 2025-10-27 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Google Search Maps Fix
// @namespace    http://tampermonkey.net/
// @version      2.0.0
// @description  Makes small map clickable again
// @author       Ovinomaster
// @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://greasyfork.org/it/users/1271103-ovinomaster
// ==/UserScript==
(function() {
    'use strict';

    function addMapsTab() {
        // Find the navigation bar container (All, Images, News…)
        const navList = document.querySelector('[role="navigation"] [role="list"]');
        if (!navList) return;

        // Check if “Maps” is already present
        const existing = Array.from(navList.querySelectorAll('li')).find(li => /Maps|Mappa/i.test(li.textContent));
        if (existing) return;

        // Clone an existing tab item to keep the same style
        const cloneSrc = navList.querySelector('li');
        if (!cloneSrc) return;

        const mapsLi = cloneSrc.cloneNode(true);
        const link = mapsLi.querySelector('a');
        if (link) {
            // Get the current search query
            const q = new URLSearchParams(window.location.search).get('q') || '';
            // Set the link to Google Maps
            link.href = `https://www.google.com/maps?q=${encodeURIComponent(q)}`;
        }
        const span = mapsLi.querySelector('span');
        if (span) {
            span.textContent = 'Maps';
        } else {
            mapsLi.textContent = 'Maps';
        }

        // Insert as the second tab (right after “All”)
        navList.insertBefore(mapsLi, navList.childNodes[1]);
    }

    function makeMiniMapClickable() {
        const q = new URLSearchParams(window.location.search).get('q') || '';
        const mapsLink = `https://www.google.com/maps?q=${encodeURIComponent(q)}`;

        // Example: thumbnails may have the “.Lx2b0d” class in Google markup
        const mini = document.querySelector('.Lx2b0d');
        if (mini && !mini.closest('a')) {
            const a = document.createElement('a');
            a.href = mapsLink;
            a.style.display = 'block';
             // Move the mini-map’s children inside the link
            while (mini.firstChild) {
                a.appendChild(mini.firstChild);
            }
            mini.appendChild(a);
        }
    }

    // Run on page load and periodically (to handle dynamic navigation)
    addMapsTab();
    makeMiniMapClickable();
    setInterval(() => {
        addMapsTab();
        makeMiniMapClickable();
    }, 2000);
})();