您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows road closures from Waze Live map in WME
当前为
// ==UserScript== // @name WME Road Closures // @description Shows road closures from Waze Live map in WME // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://editor-beta.waze.com/* // @version 0.3 // @grant none // @copyright 2014, pvo11 // @namespace https://gf.qytechs.cn/scripts/5144-wme-road-closures // ==/UserScript== roadClosures_version = '0.3'; var epsg900913 = new OpenLayers.Projection("EPSG:900913"); var epsg4326 = new OpenLayers.Projection("EPSG:4326"); var closuresLayer; function drawLine(line) { var linePoints = []; var p = new OpenLayers.Geometry.Point(line[0].x, line[0].y).transform(epsg4326, epsg900913); linePoints.push(p); for(var i = 1; i < line.length-1; i++) { var lp1 = line[i]; var lp2 = line[i + 1]; var dif_lon = Math.abs(lp1.x - lp2.x); var dif_lat = Math.abs(lp1.y - lp2.y); if (dif_lon < 0.0000001 && dif_lat < 0.0000001) continue; var p = new OpenLayers.Geometry.Point(lp1.x, lp1.y).transform(epsg4326, epsg900913); linePoints.push(p); } var p = new OpenLayers.Geometry.Point(line[line.length-1].x, line[line.length-1].y).transform(epsg4326, epsg900913); linePoints.push(p); var lineString = new OpenLayers.Geometry.LineString(linePoints); var lineFeature = new OpenLayers.Feature.Vector(lineString, null, { strokeColor: '#000000', strokeDashstyle: 'solid', strokeLinecap: 'round', strokeWidth: 14 } ); closuresLayer.addFeatures(lineFeature); lineString = new OpenLayers.Geometry.LineString(linePoints); lineFeature = new OpenLayers.Feature.Vector(lineString, null, { strokeColor: '#FF0000', strokeDashstyle: 'solid', strokeLinecap: 'round', strokeWidth: 12 } ); closuresLayer.addFeatures(lineFeature); lineString = new OpenLayers.Geometry.LineString(linePoints); lineFeature = new OpenLayers.Feature.Vector(lineString, null, { strokeColor: '#FFFFFF', strokeDashstyle: 'dot', strokeLinecap: 'square', strokeWidth: 12 } ); closuresLayer.addFeatures(lineFeature); } function getRoutingURL(){ var server = Waze.location.code; var routingURL = 'https://www.waze.com'; switch(server){ case 'usa': routingURL += '/rtserver/web/GeoRSS'; break; case 'row': routingURL += '/row-rtserver/web/GeoRSS'; break; case 'il': routingURL += '/il-rtserver/web/GeoRSS'; break; default: routingURL += '/rtserver/web/GeoRSS'; }; return routingURL; } function requestClosures() { if (closuresLayer.getVisibility() === true) { var extent = Waze.map.getExtent(); var pLB = new OpenLayers.Geometry.Point(extent.left, extent.bottom).transform(epsg900913, epsg4326); var pRT = new OpenLayers.Geometry.Point(extent.right, extent.top).transform(epsg900913, epsg4326); var data = { format: "JSON", types: "traffic", left: pLB.x, right: pRT.x, bottom: pLB.y, top: pRT.y } var url = getRoutingURL(); $.ajax({ dataType: "json", url: url, data: data, success: function(json) { if (json.error != undefined) { } else { var ids = []; if ("undefined" !== typeof(json.jams)) { var numjams = json.jams.length; for (var i = 0; i < numjams; i++) { var jam = json.jams[i]; if (jam.blockType === "ROAD_CLOSED_EVENT") { if (typeof(ids[jam.segments[0].ID]) === "undefined") { drawLine(jam.line); ids[jam.segments[0].ID] = 1; } } } } } } }); } } function roadClosures_init() { closuresLayer = new unsafeWindow.OpenLayers.Layer.Vector("Road Closures", { displayInLayerSwitcher: true, uniqueName: "__DrawRouteClosures" }); I18n.translations.en.layers.name["__DrawRouteClosures"] = "Road Closures"; unsafeWindow.Waze.map.addLayer(closuresLayer); closuresLayer.setVisibility(true); Waze.map.events.register("zoomend", null, requestClosures); Waze.map.events.register("moveend", null, requestClosures); Waze.map.events.register("changelayer", null, requestClosures); requestClosures(); } function roadClosures_bootstrap() { var bGreasemonkeyServiceDefined = false; try { bGreasemonkeyServiceDefined = ("object" === typeof Components.interfaces.gmIGreasemonkeyService); } catch (err) { /* Ignore */ } if ( "undefined" === typeof unsafeWindow || ! bGreasemonkeyServiceDefined) { unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute ('onclick', 'return window;'); return dummyElem.onclick (); } ) (); } setTimeout(roadClosures_init, 3000); } roadClosures_bootstrap();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址