您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Keeps track of the current map center and zoom and restores it upon reloading.
当前为
// ==UserScript== // @name WME Reload Map Position Fix // @namespace https://greasyfork.org/users/166843 // @description Keeps track of the current map center and zoom and restores it upon reloading. // @version 2021.09.01.01 // @author dBsooner // @grant none // @require https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js // @license GPLv3 // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/ // @contributionURL https://github.com/WazeDev/Thank-The-Authors // ==/UserScript== /* global window, localStorage, sessionStorage, W, $, OpenLayers, WazeWrap */ /* Changelog: * * 2020.09.08.01: Initial release. * * 2020.09.09.01: Check for URL parameters. * * 2021.09.01.01: Update to latest WME zoom level changes. * * */ const SETTINGS_STORE_NAME = 'WME_RMPF'; let _bootstrapTimeout; function updatedSavedMapPosition() { const storage = { savedCenter: W.map.getCenter(), savedZoom: W.map.getZoom() }; localStorage.setItem(SETTINGS_STORE_NAME, JSON.stringify(storage)); sessionStorage.setItem(SETTINGS_STORE_NAME, JSON.stringify(storage)); } function init() { const loadedSettings = $.parseJSON(sessionStorage.getItem(SETTINGS_STORE_NAME)) || $.parseJSON(localStorage.getItem(SETTINGS_STORE_NAME)), savedCenter = (loadedSettings) ? loadedSettings.savedCenter : W.map.getCenter(), savedZoom = (loadedSettings) ? loadedSettings.savedZoom : W.map.getZoom(), currCenter = W.map.getCenter(), currZoom = W.map.getZoom(), urlParams = new URLSearchParams(window.location.search); if (!urlParams.get('lon') && !urlParams.get('lat') && !urlParams.get('zoomLevel') && ((currCenter.lon !== savedCenter.lon) || (currCenter.lat !== savedCenter.lat) || (savedZoom !== currZoom))) W.map.getOLMap().moveTo(new OpenLayers.LonLat([savedCenter.lon, savedCenter.lat]), savedZoom); W.map.events.register('zoomend', null, updatedSavedMapPosition); W.map.events.register('moveend', null, updatedSavedMapPosition); window.addEventListener('beforeunload', updatedSavedMapPosition, false); } function bootstrap(tries) { if (W && W.map && $ && WazeWrap.Ready) { window.clearTimeout(_bootstrapTimeout); _bootstrapTimeout = undefined; init(); } else if (tries < 1000) { console.log(`RMPF: WME not ready. Retrying ${tries} of 1000`); _bootstrapTimeout = window.setTimeout(bootstrap, 200, ++tries); } else { console.error('RMPF: Bootstrap timed out waiting for WME to become ready.'); } } bootstrap(1);