// ==UserScript== // @name wplace - fast map browser // @namespace http://pawing.cv // @version v1.0 // @description use openstreetmap to navigate the world faster! // @author cv // @match https://wplace.live/* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; function openmap() { let popupcode = ` OpenStreetMap
Choose a location with !
`; const left = (window.screen.width - 800) / 2; const top = (window.screen.height - 600) / 2; const popup = window.open( '', 'wplace_map_popup', `width=800,height=600,left=${left},top=${top},resizable=yes,scrollbars=no,status=no,location=no,toolbar=no,menubar=no` ); if (popup) { const writepopup = () => { if (popup.document && popup.document.readyState === "complete") { popup.document.open(); popup.document.write(popupcode); popup.document.close(); } else {setTimeout(writepopup, 10)} }; writepopup(); } else {alert("Popup failed to open! (do you have popups disabled?)")} } function cleanlink() { const cleanlink = new URL(window.location.href); cleanlink.searchParams.delete('lat'); cleanlink.searchParams.delete('lng'); cleanlink.searchParams.delete('zoom'); window.history.replaceState({}, '', cleanlink.pathname + cleanlink.search + cleanlink.hash); } window.addEventListener('message', function(event) { if (event.data && event.data.source === 'wplace-map-popup' && typeof event.data.lat === 'number' && typeof event.data.lng === 'number') { const currentlink = new URL(window.location.href); currentlink.searchParams.set('lat', event.data.lat); currentlink.searchParams.set('lng', event.data.lng); if (typeof event.data.zoom === 'number') { currentlink.searchParams.set('zoom', event.data.zoom); } window.location.replace(currentlink.toString()); window.addEventListener('pageshow', cleanlink); } }); window.addEventListener('DOMContentLoaded', function() { const url = new URL(window.location.href); if (url.searchParams.has('lat') || url.searchParams.has('lng') || url.searchParams.has('zoom')) { cleanlink(); } }); document.addEventListener('keydown', function(e) { if (e.key === 'M' || e.key === 'm') {openmap()} }); })();