您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows Permalinks or Segments ID's on the map and colorizes a level of segments.
当前为
// ==UserScript== // @name WME Permalink Selector // @description Shows Permalinks or Segments ID's on the map and colorizes a level of segments. // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://editor-beta.waze.com/* // @version 1.0.5.1 // @grant none // @namespace https://gf.qytechs.cn/scripts/3931-wme-permalink-selector // ==/UserScript== /* Original wlodek76's version 1.0.5 adapted to WME v1.6-297 by FZ69617 */ var wmech_version = "1.0.5.1" var loadcount = 0; //------------------------------------------------------------------------------------------------ function bootstrapPermalinkSelector() { var bGreasemonkeyServiceDefined = false; try { bGreasemonkeyServiceDefined = (typeof Components.interfaces.gmIGreasemonkeyService === "object"); } catch (err) { /* Ignore */ } if (typeof unsafeWindow === "undefined" || ! bGreasemonkeyServiceDefined) { unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute('onclick', 'return window;'); return dummyElem.onclick(); }) (); } setTimeout(initialisePermalinkHighlight, 999); window.addEventListener("beforeunload", savePermalink, false); } //------------------------------------------------------------------------------------------------ function savePermalink() { var segobj = document.getElementById('permalink_id_content'); if (segobj != null) { var segstr = segobj.value; localStorage.setItem("PermalinkSegmentContent", segstr); } } //--------------------------------------------------------------------------------------- function loadPermalink() { var segobj = document.getElementById('permalink_id_content'); if (segobj != null) { if (loadcount == 0) { loadcount++; if (localStorage.PermalinkSegmentContent) segobj.value = localStorage.PermalinkSegmentContent; } } } //--------------------------------------------------------------------------------------- function highlightPermalink() { var showLevels = getId('_cbShowRoadLevels').checked; var segobj = document.getElementById('permalink_id_content'); loadPermalink(); var segstr = segobj.value; var seglines = new Array(); if (segstr.length > 0) { var obj = document.getElementById('sidepanel-permalink-tab'); if (obj.innerHTML == "Permalink") obj.innerHTML = "Permalink*"; var p = segstr.indexOf("segments="); if (p >= 0) { var newstr = ""; var q = segstr.indexOf("segments="); while (q >= 0) { var q1 = segstr.indexOf("\n", q + 1); var q2 = segstr.indexOf("http", q + 1); var q3 = segstr.indexOf('&', q + 1); var qmax = 99999999; if (q1 >=0 && q1 < qmax) qmax = q1; if (q2 >=0 && q2 < qmax) qmax = q2; if (q3 >=0 && q3 < qmax) qmax = q3; if (q1 == -1 && q2 == -1 && q3 == -1) qmax = segstr.length; //console.log(q, qmax, q1, q2, q3); newstr += segstr.substr(q+9, qmax - (q+9)) + ","; q = segstr.indexOf("segments=", q + 1); } segstr = newstr; } segstr = segstr.replace(/\n/g, ","); segstr = segstr.replace(/\s+/g, ''); seglines = segstr.split(","); } else { var obj = document.getElementById('sidepanel-permalink-tab'); if (obj.innerHTML == "Permalink*") obj.innerHTML = "Permalink"; } var numDays = 0; var objnumRecentDays = getId('permalink_numRecentDays'); if (objnumRecentDays != undefined) { var numDays = objnumRecentDays.value; if (numDays === undefined) numDays = 0; } var tNow = new Date(); var before = tNow.getTime() - (numDays * 86400000); before = before - ( before % 3600000 ); var beforeTime = new Date(); beforeTime.setTime(before /*+ tNow.getTimezoneOffset() * 60 * 1000*/ ); if (numDays == 0) getId('permalink_date_before').innerHTML = ''; else getId('permalink_date_before').innerHTML = 'After: ' + beforeTime.toLocaleString().trim(); for (var seg in Waze.model.segments.objects) { var segment = Waze.model.segments.get(seg); var attributes = segment.attributes; var line = getId(segment.geometry.id); if (line !== null) { var sid = attributes.primaryStreetID; var street = Waze.model.streets.get(sid); var level = attributes.level; var segid = segment.attributes.id; var lineColor = line.getAttribute("stroke"); var lineWidth = line.getAttribute("stroke-width"); var opacity = line.getAttribute("stroke-opacity"); var newColor = lineColor; var newWidth = lineWidth; var newOpacity = opacity; var reset = 0; var RecentlyUpdatedGreen = 0; var RecentlyCreatedGreen = 0; var updatedOn = new Date(attributes.updatedOn); var createdOn = new Date(attributes.createdOn); if (numDays > 0 && updatedOn.getTime() >= before) RecentlyUpdatedGreen = 1; if (numDays > 0 && createdOn.getTime() >= before) RecentlyCreatedGreen = 1; // check that WME hasn't highlighted this segment (better method) var selected = 0; if (segment.renderIntent == "highlight") selected = 1; if (segment.renderIntent == "select") selected = 1; if (segment.renderIntent == "highlightselected") selected = 1; // check for WME Highlights errors and do not affect their colors if (lineColor == "#ff0") selected = 1; //segments has soft-turns (yellow) if (lineColor == "#f0f") selected = 1; //segment has reverse connections (purple) if (lineColor == "#0ff") selected = 1; if (selected) { continue; } if (showLevels) { newWidth = 9; if (level == null || level == undefined) newColor = "#40C040"; else { level = parseInt(level); if (level <= -3) newColor = "#040484"; if (level == -2) newColor = "#0404C4"; if (level == -1) newColor = "#0404FC"; if (level == 0) { newColor = "#848484"; newWidth = 4; } if (level == 1) newColor = "#FC8404"; if (level == 2) newColor = "#FC0404"; if (level == 3) newColor = "#FC04FC"; if (level >= 4) newColor = "#840484"; } newOpacity = 1; } else { if (newColor == "#040484") reset = 1; if (newColor == "#0404C4") reset = 1; if (newColor == "#0404FC") reset = 1; if (newColor == "#848484") reset = 1; if (newColor == "#FC8404") reset = 1; if (newColor == "#FC0404") reset = 1; if (newColor == "#FC04FC") reset = 1; if (newColor == "#840484") reset = 1; } var nsel = 0; if (seglines.length > 0) { for(var i=0; i<seglines.length; i++) { if (seglines[i] == segid) { nsel++; } } } if (nsel == 0) { if (newColor == "#f1125c") reset = 1; if (newColor == "#0056ff") reset = 1; if (newColor == "#ff7802") reset = 1; if (newColor == "#ff02f0") reset = 1; } else if (nsel == 1) { if (RecentlyUpdatedGreen == 0) newColor = "#0056ff"; if (RecentlyUpdatedGreen == 1) newColor = "#ff7802"; if (RecentlyCreatedGreen == 1) newColor = "#ff02f0"; newWidth = 9; newOpacity = 0.8; } else if (nsel >= 2) { newColor = "#f1125c"; newWidth = 9; newOpacity = 0.8; } if (reset) { newColor = "#dd7700"; newWidth = 8; newOpacity = 0.001; } if (newColor != lineColor) { line.setAttribute("stroke", newColor); line.setAttribute("stroke-width", newWidth); line.setAttribute("stroke-opacity", newOpacity); } } } } //-------------------------------------------------------------------------------------------------------- function getElementsByClassName(classname, node) { if(!node) node = document.getElementsByTagName("body")[0]; var a = []; var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName("*"); for (var i=0,j=els.length; i<j; i++) if (re.test(els[i].className)) a.push(els[i]); return a; } //-------------------------------------------------------------------------------------------------------- function getId(node) { return document.getElementById(node); } //-------------------------------------------------------------------------------------------------------- function initialisePermalinkHighlight() { var addon = document.createElement('section'); addon.id = "permalink-addon"; addon.innerHTML = '<b style="margin:0px; padding:0px;"><a href="https://gf.qytechs.cn/scripts/5404-wme-permalink-selector" target="_blank"><u>WME Permalink Selector</u></a></b> v' + wmech_version; var tooltip1 = 'title="Selects segments or permalinks on the map."'; var tooltip2 = 'title="Selects segments edited before specified date."'; var tooltip3 = 'title="Selects segments created before specified date."'; var tooltip4 = 'title="Marks ID of segments which exists more then once on the list."'; var section = document.createElement('p'); section.id = "permalinkSection"; section.innerHTML = '' + '<input type="checkbox" id="_cbShowRoadLevels" style="margin-left:8px; margin-top:16px;" > Road Levels</input>' + '<br><br>' + '<b>Permalink Selector:</b>' + '<textarea id="permalink_id_content" style="width:280px; height:150px; " placeholder="Paste Segments ID\'s or Permalinks here" ></textarea>' + '<br><div ' + tooltip1 + ' style="margin-left:4px;position:relative;top:+3px;display:inline-block;width:16px;height:16px;background-color:#0056ff;"></div> - selected segments' + '<br><div ' + tooltip2 + ' style="margin-left:4px;position:relative;top:+3px;display:inline-block;width:16px;height:16px;background-color:#ff7802;"></div> - recently edited segments' + '<br><div ' + tooltip3 + ' style="margin-left:4px;position:relative;top:+3px;display:inline-block;width:16px;height:16px;background-color:#ff02f0;"></div> - recently created segments' + '<br><div ' + tooltip4 + ' style="margin-left:4px;position:relative;top:+3px;display:inline-block;width:16px;height:16px;background-color:#f1125c;"></div> - doubled segments' + '<br><br>Recently Edited/Created: <input type="number" step="1" min="0" max="30" size="2" value="5" id="permalink_numRecentDays" style=""/> days' + '<div id="permalink_date_before" style="xborder: 1px solid red; margin:0px; padding:0px; text-align:left; " ><div>' ; addon.appendChild(section); var userTabs = getId('user-info'); var navTabs = getElementsByClassName('nav-tabs', userTabs)[0]; var tabContent = getElementsByClassName('tab-content', userTabs)[0]; newtab = document.createElement('li'); newtab.innerHTML = '<a id=sidepanel-permalink-tab href="#sidepanel-permalink" data-toggle="tab">Permalink</a>'; navTabs.appendChild(newtab); addon.id = "sidepanel-permalink"; addon.className = "tab-pane"; tabContent.appendChild(addon); window.setInterval(highlightPermalink, 333); Waze.map.events.register("zoomend", null, highlightPermalink); } //-------------------------------------------------------------------------------------------------------------- bootstrapPermalinkSelector();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址