您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Look up KY road info from KYTC. Mouse over a road and hit 'ALT+k'.
当前为
// ==UserScript== // @name WME KYTC Lookup // @namespace // @version 2020.07.21.001 // @description Look up KY road info from KYTC. Mouse over a road and hit 'ALT+k'. // @author MapOMatic // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/ // @grant none // eslint-disable-next-line max-len // @icon data:image/png;base64,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 // @require https://gf.qytechs.cn/scripts/24851-wazewrap/code/WazeWrap.js // @namespace // ==/UserScript== /* global W */ /* global $ */ /* global WazeWrap */ function log(message) { console.log('KYTC Lookup:', message); } function logDebug(message) { console.debug('KYTC Lookup:', message); } function processKYTCRouteInfo(routeInfos) { $('#kytc-button').text('KYTC').css('color', 'blue'); if (routeInfos.RouteInfos.length > 0) { const routeInfo = routeInfos.RouteInfos[0]; const match = routeInfo.RTUnique.match(/\d+-(.*-\d+)\s+/); const number = (match && match.length) > 1 ? match[1] : routeInfo.RTUnique; WazeWrap.Alerts.info(null, $('<table>').append( [ ['NUMBER:', number], ['NAME:', routeInfo.Routename], ['COUNTY:', routeInfo.CountyName], ['DISTRICT:', routeInfo.District], ['MILE POINT:', routeInfo.MilePoint], ['GOV LEVEL:', routeInfo.GovLevelValue], ['FC:', routeInfo.FunctionalClass], ['POSTED SL:', routeInfo.PostedSpeedLimit] ].map(itm => $('<tr>').append( $('<td class="kytc-lookup-row-header">').text(itm[0]), $('<td>').text(itm[1]) )) ).prop('outerHTML'), true); } else { WazeWrap.Alerts.error(null, 'No road found at this location. Try again, or click the KYTC button in the footer to open the KYTC map.'); } } async function processKYTCCoords(coordsIn) { debugger; const jsonCoords = coordsIn; const searchRadius = W.map.zoom <= 6 ? 640 / (W.map.zoom ** 2) : 10; const url = `https://maps.kytc.ky.gov/arcgis/rest/services/MeasuredRoute/MapServer/exts/KYTCGISREST/GetRouteInfo?X=${ jsonCoords.geometries[0].x}&Y=${jsonCoords.geometries[0].y}&SearchRadius=${searchRadius}&f=json`; const routes = await $.getJSON(url); processKYTCRouteInfo(routes); } async function checkKeyDown(e) { if (e.keyCode === 75 && e.altKey) { $('#kytc-button').text('KYTC...').css('color', 'gray'); const mousePosition = $('.mouse-position').text().split(' '); logDebug(`looking up road at coordinate ${mousePosition}`); const url = `https://kygisserver.ky.gov/arcgis/rest/services/Utilities/Geometry/GeometryServer/project?inSR=4326&outSR=102763&geometries=${ mousePosition[0]}%2C${mousePosition[1]}&transformation=&transformForward=true&f=json`; logDebug(url); const coords = await $.getJSON(url); processKYTCCoords(coords); } } async function kytcButtonClick() { const wazeExt = W.map.getExtent(); // let url = `https://maps.kytc.ky.gov/arcgis/rest/services/Utilities/Geometry/GeometryServer/project?inSR=3857&outSR=102763&geometries=${ // wazeExt.left}%2C${wazeExt.bottom}%2C${wazeExt.right}%2C${wazeExt.top}&transformation=&transformForward=true&f=json`; // logDebug(url); // const result = await $.getJSON(url); // const pts = result.geometries; url = `https://maps.kytc.ky.gov/functionalclass/?xmin=${wazeExt.left}&ymin=${wazeExt.bottom}&xmax=${wazeExt.right}&ymax=${wazeExt.top}`; logDebug(url); window.open(url, '_blank'); } function init() { $('.WazeControlPermalink').prepend( $('<div>').css({ float: 'left', dispaly: 'inline-block', padding: '0px 5px 0px 3px' }).append( $('<a>', { id: 'kytc-button', title: 'Open the KYTC map in a new window' }) // eslint-disable-next-line no-script-url .text('KYTC').attr('href', 'javascript:void(0)') .css({ float: 'left', textDecoration: 'none', color: 'blue', fontWeight: 'bold' }) .click(kytcButtonClick) ) ); $('head').append([ '<style type="text/css">', '.kytc-lookup-row-header { padding-right: 5px; }', '</style>' ].join(' ')); /* Event listeners */ W.loginManager.events.register('afterloginchanged', this, init); document.addEventListener('keydown', checkKeyDown, false); log('Initialized.'); } function bootstrap() { if (W && W.loginManager && W.loginManager.events.register && W.map) { log('Initializing...'); init(); } else { log('Bootstrap failed. Trying again...'); window.setTimeout(bootstrap, 1000); } } log('Bootstrap...'); bootstrap();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址