您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces default map and map labels on Geoguessr with localized ones.
- // ==UserScript==
- // @name Localized map and map labels for Geoguessr
- // @namespace geoguessr_anon
- // @version 1.5.0
- // @description Replaces default map and map labels on Geoguessr with localized ones.
- // @author Anon
- // @license WTFPL
- // @match https://*.geoguessr.com/*
- // @match https://maps.googleapis.com/maps/api/*
- // @require https://openuserjs.org/src/libs/sizzle/GM_config.js
- // @grant GM.webRequest
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_addStyle
- // @run-at document-start
- // ==/UserScript==
- var address = (window.location.href);
- var valid_address = RegExp('https://www.geoguessr\.com[^.].*');
- //console.log(valid_address.test(address));
- //console.log(valid_address);
- //console.log(address);
- //--- Abort the script if top-level page isn't geoguessr.
- if (!valid_address.test(address)) {
- return
- };
- var langcodes = document.createElement('a');
- langcodes.textContent = 'Language Code';
- langcodes.href = 'https://developers.google.com/maps/faq#languagesupport';
- langcodes.target = 'blank';
- var regioncodes = document.createElement('a');
- regioncodes.textContent = "Region Code (use the tags with type 'region')";
- regioncodes.href = 'https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry';
- regioncodes.target = 'blank';
- //--- Initialize our config menu.
- GM_config.init(
- {
- 'id': 'geo_mapconfig',
- 'title': 'Geoguessr Language/Region Settings',
- 'fields':
- {
- 'Language':
- {
- 'label': langcodes,
- 'type': 'text',
- 'title': 'Enter a two-letter language code.',
- 'default': 'en'
- },
- 'Region':
- {
- 'label': regioncodes,
- 'type': 'text',
- 'title': 'Enter a two-letter region code.',
- 'default': 'us'
- },
- 'Show':
- {
- 'label': 'Start with config open',
- 'type': 'checkbox',
- 'title': 'Uncheck this to hide the config window on startup',
- 'default': 'true'
- },
- }
- });
- 'use strict';
- var map_lang = GM_config.get('Language');
- var map_reg = GM_config.get('Region');
- //--- Intercept the google maps API request and change the language and region codes to what was configured.
- GM.webRequest([
- { selector: 'https://maps.googleapis.com/maps/api/js?key=*&v=*&libraries=places,drawing&language=*®ion=*', action: { redirect: { from: "(.+)([A-Za-z0-9_]{39})(&v=)([0-9.]{1,4})(&libraries=places,drawing)(&language=)(?:..)(®ion=)(?:..)", to: "$1$2$3$4$5$6" + map_lang + "$7" + map_reg } } },
- ]//, function(info, message, details) {
- //console.log(info, message, details);
- //}
- );
- //--- Open the config on first launch.
- if (GM_config.get('Show') == true) {
- GM_config.open('geo_mapconfig');
- }
- //--- Wait for page to be fully loaded before adding our config button.
- window.addEventListener ("load", pageFullyLoaded);
- function pageFullyLoaded () {
- var zNode = document.createElement ('div');
- zNode.innerHTML = '<button id="myButton" type="button">Map Language</button>';
- zNode.setAttribute ('id', 'myContainer');
- document.body.appendChild (zNode);
- //--- Activate the newly added button.
- document.getElementById ("myButton").addEventListener (
- "click", ButtonClickAction, false
- );
- function ButtonClickAction (zEvent) {
- //--- Open the config when it's clicked.
- GM_config.open('geo_mapconfig')
- }
- //--- Style the button. It's not perfect but it's good enough, feel free to fix it if you're good at this kind of stuff.
- GM_addStyle ( `
- #myContainer {
- position: absolute;
- top: 19px;
- left: 32px;
- opacity: 1.0;
- z-index: 1100;
- }
- #myButton {
- cursor: pointer;
- background: #6cb928;
- font-family: neo-sans;
- font-size: 0.75rem;
- font-style: italic;
- font-weight: 700;
- padding: 0.4rem 1rem;
- color: white;
- border: 0px;
- margin: 0px;
- opacity: 1.0;
- border-radius: 3.75rem;
- align-items: center;
- justify-content: center;
- text-transform: uppercase;
- transition-duration: 0s;
- }
- #myButton:hover {
- transform: scale(1.06);
- }
- ` );
- }
- //USEFUL LINKS//
- // List of Google Maps API language codes can be found here (determines the language of labels on your map):
- // https://developers.google.com/maps/faq#languagesupport
- // List of Google Maps API region codes can be found here (determines the regional variation of your map):
- // https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
- // Note: Use the tags with type 'region'
- //NOTES//
- // If you change language settings during a game, you'll need to refresh the page before the changes show.
- // If you're playing competitive or something, this could potentially be seen as cheating, so keep that in mind, and okay it with whomever beforehand. :)
- // I've only tested this using Firefox/Tampermonkey, YMMV with other browsers/userscript engines (GM_webRequest is not amazingly documented).
- //CHANGELOG//
- // 1.4:
- // Should now work on all gamemodes.
- // Should now work with all geoguessr UI languages (though I think they might have removed the option entirely as I can't find it to test).
- // Simplified configuration somewhat.
- // 1.4.1:
- // Works with the new map version (coulda had the new version the entire time, now I think about it).
- // Should now work without needing to F5 after entering a game from some pages.
- // 1.5.0:
- // No longer requires an API key to be supplied by the user.
- // Now has a configuration mechanism.
- // Now has a fancy button in the top-left (I know it's not completely identical to the native buttons, but I'm a novice and it's close enough).
- // Uploaded to Greasy Fork镜像, no more ugly pastebins!
- // To-do:
- // More elegant way to restrict it to GeoGuessr.
- // It might run on other pages that have google maps iframes due to the @match for the google maps API, which seems to be required to get GM_webRequest to work.
- // Right now it aborts the script if it detects the page it's running on isn't GeoGuessr, but the script still technically ran something.
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址