Google Search Maps Fix

Makes small map clickable again

当前为 2025-10-27 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 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);
})();