WorldGuessr Coordinate Finder

Adds a button to get latitude and longitude in WorldGuessr and copy it to clipboard, plus a minimap when coordinates are available

目前为 2025-04-02 提交的版本。查看 最新版本

// ==UserScript==
// @name WorldGuessr Coordinate Finder
// @namespace http://tampermonkey.net/
// @version 0.8
// @description Adds a button to get latitude and longitude in WorldGuessr and copy it to clipboard, plus a minimap when coordinates are available
// @author Projectornist
// @match https://www.worldguessr.com/*
// @grant GM_addStyle
// ==/UserScript==

(function() {
  'use strict';

  // Add custom CSS for the buttons, coordinates display, and minimap
  GM_addStyle(`
    #getCoordsButton {
      position: fixed;
      top: 20px;
      right: 20px;
      padding: 10px 20px;
      background-color: black;
      color: white;
      border: none;
      border-radius: 5px;
      font-size: 16px;
      cursor: pointer;
      z-index: 9999;
    }
    #getCoordsButton:hover {
      background-color: #333;
    }
    #coordsDisplay {
      position: fixed;
      top: 70px;
      right: 20px;
      padding: 10px;
      background-color: rgba(0, 0, 0, 0.7);
      color: white;
      border-radius: 5px;
      font-size: 14px;
      display: none;
      z-index: 9999;
    }
    #googleMapContainer {
      position: fixed;
      bottom: 20px;
      left: 20px; /* Changed to 'left' to place it on the left side */
      width: 300px;
      height: 300px;
      background-color: rgba(0, 0, 0, 0.8);
      border-radius: 10px;
      overflow: hidden;
      display: none;
      z-index: 9999;
    }
    #googleMapContainer iframe {
      width: 100%;
      height: 100%;
      border: none;
    }
    #googleMapContainer .closeBtn {
      position: absolute;
      top: 10px;
      right: 10px;
      background-color: #333;
      color: white;
      padding: 5px;
      cursor: pointer;
    }
  `);

  // Check if the button already exists to avoid duplication
  if (document.getElementById('getCoordsButton')) {
    return; // If the button exists, do not create another one
  }

  // Create the button for getting coordinates
  const button = document.createElement('button');
  button.id = 'getCoordsButton';
  button.textContent = 'Get Coordinates';
  document.body.appendChild(button);

  // Create the display area for coordinates (Initially hidden)
  const coordsDisplay = document.createElement('div');
  coordsDisplay.id = 'coordsDisplay';
  document.body.appendChild(coordsDisplay);

  // Create the minimap container (Initially hidden)
  const mapContainer = document.createElement('div');
  mapContainer.id = 'googleMapContainer';
  document.body.appendChild(mapContainer);

  // Create a close button for the minimap
  const closeBtn = document.createElement('button');
  closeBtn.textContent = 'X';
  closeBtn.className = 'closeBtn';
  mapContainer.appendChild(closeBtn);

  // Function to extract coordinates from the URL
  function getCoordinates() {
    const urlParams = new URLSearchParams(window.location.search);
    const lat = urlParams.get('lat');
    const long = urlParams.get('long');

    // Show the coordinates or an error message
    if (lat && long) {
      coordsDisplay.textContent = `Latitude: ${lat}, Longitude: ${long}`;
      coordsDisplay.style.display = 'block';

      // Show the minimap with the coordinates
      showMinimap(lat, long);

      // Copy coordinates to clipboard
      copyToClipboard(`${lat}, ${long}`);
    } else {
      coordsDisplay.textContent = 'Coordinates not found';
      coordsDisplay.style.display = 'block';
    }
  }

  // Function to copy text to clipboard
  function copyToClipboard(text) {
    navigator.clipboard.writeText(text).then(() => {
      alert('Coordinates copied to clipboard!');
    }).catch(err => {
      console.error('Error copying to clipboard: ', err);
    });
  }

  // Function to show the minimap with Google Maps
  function showMinimap(lat, long) {
    const iframe = document.createElement('iframe');
    iframe.src = `https://www.google.com/maps?q=${lat},${long}&z=18&output=embed`;

    // Show the minimap container
    mapContainer.style.display = 'block';

    // Append the iframe to the map container
    mapContainer.appendChild(iframe);

    // Add the close button functionality
    closeBtn.onclick = () => {
      mapContainer.style.display = 'none'; // Hide the minimap container
      mapContainer.innerHTML = ''; // Remove the iframe
      mapContainer.appendChild(closeBtn); // Keep the close button after removing iframe
    };
  }

  // Function to check if coordinates are available in the URL
  function checkCoordinatesAvailability() {
    const urlParams = new URLSearchParams(window.location.search);
    const lat = urlParams.get('lat');
    const long = urlParams.get('long');

    if (lat && long) {
      button.style.display = 'inline-block'; // Show the button if coordinates are found
    } else {
      button.style.display = 'none'; // Hide the button if coordinates are not found
    }
  }

  // Periodically check if coordinates are available and show/hide the button
  setInterval(checkCoordinatesAvailability, 1000); // Check every 1 second

  // Add event listener to the Get Coordinates button
  button.addEventListener('click', function() {
    getCoordinates();
  });

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址