您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This lets you drop boxes around the map to help visualize where you have been editing
当前为
// ==UserScript== // @name WME BeenThere // @namespace https://greasyfork.org/users/30701-justins83-waze // @description This lets you drop boxes around the map to help visualize where you have been editing // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://beta.waze.com/* // @require https://greasyfork.org/scripts/27023-jscolor/code/JSColor.js // @version 0.0.2 // @grant none // ==/UserScript== //--------------------------------------------------------------------------------------- var beenTheresettings = []; var attributes = { name: "" }; var layerFuture = []; (function() { function bootstrap(tries) { tries = tries || 1; if (window.W && window.W.map && window.W.model && window.W.loginManager.user && $ && window.jscolor) { InitMapRaidOverlay(); } else if (tries < 1000) { setTimeout(function () {bootstrap(tries++);}, 200); } } bootstrap(); function AddExtent() { var point = Waze.map.getExtent(); var groupPoints2 = { topLeft : { lon:point.left, lat:point.top }, botLeft : { lon: point.left, lat: point.bottom }, botRight: { lon: point.right, lat: point.bottom }, topRight:{ lon: point.right, lat: point.top }, color: "#" + $('#colorPicker')[0].jscolor.toString(), type: "rectangle" }; var mro_Map = Waze.map; beenTheresettings.layerHistory.push(groupPoints2); DrawRectangle(groupPoints2); } function DrawRectangle(obj){ var pnt = []; var convPoint = new OpenLayers.Geometry.Point(obj.topLeft.lon, obj.topLeft.lat); pnt.push(convPoint); convPoint = new OpenLayers.Geometry.Point(obj.botLeft.lon, obj.botLeft.lat); pnt.push(convPoint); convPoint = new OpenLayers.Geometry.Point(obj.botRight.lon, obj.botRight.lat); pnt.push(convPoint); convPoint = new OpenLayers.Geometry.Point(obj.topRight.lon, obj.topRight.lat); pnt.push(convPoint); convPoint = new OpenLayers.Geometry.Point(obj.topLeft.lon, obj.topLeft.lat); pnt.push(convPoint); var style = { strokeColor: obj.color, strokeOpacity: 0.8, strokeWidth: 8, fillColor: obj.color, fillOpacity: 0.0, label: "", labelOutlineColor: "black", labelOutlineWidth: 3, fontSize: 14, fontColor: "orange", fontOpacity: 0.85, fontWeight: "bold"}; var ring = new OL.Geometry.LinearRing(pnt); var polygon = new OL.Geometry.Polygon([ring]); var feature = new OL.Feature.Vector(polygon, attributes, style); mapLayers.addFeatures([feature]); updateTotalRectCount(); } function updateTotalRectCount(){ $('#rectCount')[0].innerHTML = mapLayers.features.length; } function NewBox() { AddExtent(); saveSettings(); } function RemoveLastBox() { var mro_Map = Waze.map; var mro_mapLayers = mro_Map.getLayersBy("uniqueName", "__beenThere"); var mro_mapLayers_mapLayerLength = mro_mapLayers[0].features.length; if (mro_mapLayers_mapLayerLength > 0) mro_mapLayers[0].features[mro_mapLayers_mapLayerLength - 1].destroy(); if(beenTheresettings.layerHistory.length > 0) layerFuture.push(beenTheresettings.layerHistory.pop()); saveSettings(); updateTotalRectCount(); } function RedoLastBox(){ if(layerFuture.length >0){ var rect = layerFuture.pop(); beenTheresettings.layerHistory.push(rect); DrawRectangle(rect); } } function RemoveAllBoxes() { var mro_Map = Waze.map; var mro_mapLayers = mro_Map.getLayersBy("uniqueName", "__beenThere"); var mro_mapLayers_mapLayerLength = mro_mapLayers[0].features.length; if (mro_mapLayers_mapLayerLength > 0) mro_mapLayers[0].destroyFeatures(); beenTheresettings.layerHistory = []; layerFuture = []; saveSettings(); updateTotalRectCount(); } var mapLayers; function InitMapRaidOverlay() { mapLayers = new OpenLayers.Layer.Vector("Been Here", { displayInLayerSwitcher: true, uniqueName: "__beenThere" }); Waze.map.addLayer(mapLayers); mapLayers.setVisibility(true); var mro_Map = Waze.map; if (mro_Map === null) return; //append our css to the head var g = '.beenThereButtons {font-size:30px; color:#59899e;}'; $("head").append($('<style type="text/css">' + g + '</style>')); //add controls to the map var c = '<div id="beenThere" style="position: absolute; top:280px; left: 6px; z-index: 1040 !important; border-radius: 5px; padding: 4px; background-color: #000000;);">'; c+= '<div><div id="NewBox" class="waze-icon-plus_neg beenThereButtons" style="display:block; float:left;" title="Draw a box around the visible area"></div>'; c+= "<button class='jscolor {valueElement:null,hash:true,closable:true}' style='float:right;width:15px; height:15px;border:2px solid black' id='colorPicker'></button></div>"; c+= '<div id="RemoveLastBox" class="waze-icon-undo beenThereButtons" style="display:block;" title="Remove last box"></div>'; c+= '<div id="Redo" class="waze-icon-redo beenThereButtons" style="display:block;" title="Redo last box"></div>'; c+= '<div id="TrashBox" class="waze-icon-trash beenThereButtons" style="display:block;" title="Remove all boxes">'; c+= '<span id="rectCount" style="float:right; top:0; right:0;font-size:12px;">0</span></div></div>'; $("#WazeMap").append(c); //set up listeners $("#NewBox").click(NewBox); $("#RemoveLastBox").click(RemoveLastBox); $('#Redo').click(RedoLastBox); $("#TrashBox").click(RemoveAllBoxes); loadSettings(); if(beenTheresettings.layerHistory.length > 0) for(var i=0;i<beenTheresettings.layerHistory.length;i++) DrawRectangle(beenTheresettings.layerHistory[i]); initColorPicker(); } function initColorPicker(tries){ tries = tries || 1; if ($('#colorPicker')[0].jscolor) { $('#colorPicker')[0].jscolor.fromString('#FDA400'); $('#colorPicker')[0].jscolor.closeText = 'Close'; //$('#colorPicker')[0].jscolor.onFineChange = update; } else if (tries < 1000) { setTimeout(function () {initColorPicker(tries++);}, 200); } } function loadSettings() { var loadedSettings = $.parseJSON(localStorage.getItem("beenThere_Settings")); var defaultSettings = { layerHistory: [] }; beenTheresettings = loadedSettings ? loadedSettings : defaultSettings; for (var prop in defaultSettings) { if (!beenTheresettings.hasOwnProperty(prop)) beenTheresettings[prop] = defaultSettings[prop]; } } function saveSettings() { if (localStorage) { var localsettings = { layerHistory: beenTheresettings.layerHistory }; localStorage.setItem("beenThere_Settings", JSON.stringify(localsettings)); } } })();