Once in Google Maps, click on the map (Do not click on markers) a popup should show at the bottom with the place and the coordinates displayed in the last line. If everything works as expected you should see a line of text on top of the map with the confirmation of the coordinates been copied to clipboard. Press Control + Shift + L while on streetview to get the coordinates from the URL.
当前为
// ==UserScript==
// @name Google Maps Coordinates Grabber
// @version 0.3.1
// @namespace https://greasyfork.org/en/users/250979-mrmike
// @author MrMike
// @description Once in Google Maps, click on the map (Do not click on markers) a popup should show at the bottom with the place and the coordinates displayed in the last line. If everything works as expected you should see a line of text on top of the map with the confirmation of the coordinates been copied to clipboard. Press Control + Shift + L while on streetview to get the coordinates from the URL.
// @grant none
// @include http*://*google*/maps/*
// @run-at document-start
// ==/UserScript==
// Leave empty to get just the values separated by a comma
// Example: `"lat": {{lat}}, "lng": {{lng}}`
const FORMAT = ``;
let theCopiedCoords;
let theCoords;
let theLatLng;
let theLat;
let theLng;
let tempCard;
document.addEventListener("keypress", (event) => {
if(event.code == "KeyL" && event.ctrlKey && event.shiftKey && !event.altKey && !event.repeat){
let theLink = location.href;
let values = theLink.substring(theLink.indexOf("@")+1, theLink.length);
values = values.split(",");
theCoords = values[0] + ", " + values[1];
theLat = values[0];
theLng = values[1];
if(FORMAT != ""){
let out = FORMAT;
copyTextToClipboard(out.replace("{{lat}}", theLat).replace("{{lng}}", theLng));
}
else{
copyTextToClipboard(theCoords);
}
}
});
//Look for card every X time
setInterval(() => {
//Get the card
let theCard = document.getElementById("reveal-card");
//Is the card not null?
if (theCard != null) {
let theDialog = theCard.querySelector("div[role='dialog']");
if (theDialog != null) {
theCoords = theDialog.lastElementChild.innerText;
theLatLng = theCoords.replace(" ", "").split(",");
if (theLatLng.length == 2 && theCopiedCoords != theCoords) {
theLat = theLatLng[0];
theLng = theLatLng[1];
if (!isNaN(theLat) && !isNaN(theLng)) {
//Copy this data to clipboard
if(FORMAT != ""){
let out = FORMAT;
copyTextToClipboard(out.replace("{{lat}}", theLat).replace("{{lng}}", theLng));
theCopiedCoords = theCoords;
}
else{
copyTextToClipboard(theCoords);
theCopiedCoords = theCoords;
}
}
}
}
}
}, 1000);
function doDisplay(theData) {
let theInput = document.getElementById("omnibox");
let inBold = document.createElement("div");
inBold.innerHTML = "<b style='font-size:20px'>Copied " + theData + "</b>";
inBold.style.backgroundColor = "#202030CC";
inBold.style.color = "#000099";
inBold.style.width = "100vw";
inBold.style.textAlign = "center";
theInput.parentNode.insertBefore(inBold, theInput.nextSibling);
setTimeout(() => {
inBold.style.display = "none";
}, 5000);
}
function fallbackCopyTextToClipboard(text, element) {
var textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
if (successful) {
doDisplay(text);
}
} catch (err) {
}
document.body.removeChild(textArea);
}
function copyTextToClipboard(text, element) {
if (!navigator.clipboard) {
fallbackCopyTextToClipboard(text, element);
return;
}
navigator.clipboard.writeText(text)
.then(() => {
doDisplay(text);
}, (err) => {});
}