您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds aerials from the COL GIS as a basemap for WME
当前为
// ==UserScript== // @name WME COL Basemap // @namespace https://fxzfun.com/ // @version 2.2 // @description Adds aerials from the COL GIS as a basemap for WME // @author FXZFun // @match https://*.waze.com/*/editor* // @match https://*.waze.com/editor* // @exclude https://*.waze.com/user/editor* // @connect query.cityoflewisville.com // @icon https://www.google.com/s2/favicons?sz=64&domain=waze.com // @require https://gf.qytechs.cn/scripts/24851-wazewrap/code/WazeWrap.js // @grant GM_xmlhttpRequest // @license GNU GPLv3 // ==/UserScript== /* global W, OL, WazeWrap */ (function() { 'use strict'; var errorOccurred; var colBasemap; var layerEnabled = false; var currentDate; /* Query COL web service and retrieve ticket and latest dates */ function getTicket() { GM_xmlhttpRequest({ method: 'GET', url: "https://query.cityoflewisville.com/v2/?webservice=NearmapTicketAndDates", onload: function(r) { var json = JSON.parse(r.response); localStorage.setItem("wmecolbasemap-ticket", json[0][0].ticket); localStorage.setItem("wmecolbasemap-aerialDates", json[0][0].aerialdates); localStorage.setItem("wmecolbasemap-mostRecentDate", JSON.parse(json[0][0].aerialdates)[0].date); if (colBasemap == null) addLayer() else colBasemap?.redraw(); } }); } /* Add the layer to the map if it does not exist */ function addLayer() { var ticket = localStorage.getItem("wmecolbasemap-ticket"); var date = localStorage.getItem("wmecolbasemap-mostRecentDate"); // retrieve new ticket if (ticket == null || date == null) return getTicket(); if (colBasemap == null) { colBasemap = new OL.Layer.XYZ( 'COL GIS Basemap', "https://us0.nearmap.com/maps/?z=${z}&x=${x}&y=${y}&nml=V&version=2&nmd=" + date.replaceAll(".", "") + "&ticket=" + ticket, { isBaseLayer: false, uniqueName: 'colgis', tileSize: new OL.Size(256,256), transitionEffect: 'resize', displayInLayerSwitcher: true, opacity: 1, visibility: false, tileOptions: { eventListeners: { 'loaderror': function(evt) { if (!errorOccurred) { console.log("WME COL Basemap: Error loading"); errorOccurred = true; getTicket(); } } } } }); W.map.addLayer(colBasemap); W.map.setLayerIndex(colBasemap, 3); } else { colBasemap.url = "https://us0.nearmap.com/maps/?z=${z}&x=${x}&y=${y}&nml=V&version=2&nmd=" + date.replaceAll(".", "") + "&ticket=" + ticket; colBasemap.redraw(); } } /* Add the date picker ui element to the top left of the map */ function addDatePicker() { var select = document.createElement("select"); select.id = "wmecolbasemap-datePicker"; select.style = "position: absolute;top: 40px;left: 60px;"; select.onchange = function () { changeCOLDate(select.value); } var dates = JSON.parse(localStorage.getItem("wmecolbasemap-aerialDates")); dates.forEach(d => { select.innerHTML += "<option>" + d.date + "</option>"; }); document.querySelector(".olMap").appendChild(select); if (currentDate != null) select.value = currentDate; } /* Callback for the date picker, changes the imagery date */ function changeCOLDate(date) { if(colBasemap) { colBasemap.url = "https://us0.nearmap.com/maps/?z=${z}&x=${x}&y=${y}&nml=V&version=2&nmd=" + date.replaceAll(".", "") + "&ticket=" + localStorage.getItem("wmecolbasemap-ticket"); colBasemap.redraw(); currentDate = date; // temporarily disable selector while loading new imagery document.getElementById("wmecolbasemap-datePicker").disabled = "disabled"; setTimeout(() => { document.getElementById("wmecolbasemap-datePicker").disabled = null; }, 3000); } } /* Callback for shortcut and layer checkbox, toggles the visibility of the layer */ function toggleBasemap() { layerEnabled = !layerEnabled; colBasemap?.setVisibility(layerEnabled); document.querySelector("#layer-switcher-item_col_gis_basemap").checked = layerEnabled; // toggles date picker if (layerEnabled) addDatePicker(); else document.getElementById("wmecolbasemap-datePicker").remove(); } /* Main entry point of the script Adds layer checkbox, shortcut, and layer */ function initialize() { console.log("WME COL Basemap: Start"); addLayer(); WazeWrap.Interface.AddLayerCheckbox( "display", "COL GIS Basemap", false, toggleBasemap, colBasemap ?? W.map.getLayerByName("WME COL Basemap")); new WazeWrap.Interface.Shortcut('COLBasemapDisplay', 'Toggle COL Basemap', 'layers', 'layersToggleCOLBasemapDisplay', "Shift+Q", toggleBasemap, null).add(); } // new wme scripts api W?.userscripts?.state?.isReady ? initialize() : document.addEventListener("wme-ready", initialize, { once: true }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址