您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows the regions in the Argentina map raid
// ==UserScript== // @name WME Argentina MR Regiones // @author Tom 'Glodenox' Puttemans, alter by fermario73 // @description Shows the regions in the Argentina map raid // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor.*$/ // @version 5.0 // @grant none // @copyright 2017 Glodenox, based on work by 2015 rickzabel, based on work by 2014 davielde // @namespace https://greasyfork.org/users/116669 // ==/UserScript== setTimeout(initMapRaidOverlay, 1000); var mapLayer, displayedArea = false; function convertPoints(list) { return list.map(function(point) { return new OL.Geometry.Point(point[0], point[1]).transform(new OL.Projection("EPSG:4326"), Waze.map.getProjectionObject()); }); } function addRaidPolygon(raidLayer, groupPoints, color, name) { var style = { strokeColor: "Pink", strokeOpacity: 0.8, strokeWidth: 3, fillColor: '#FFFFFF', // Doesn't matter, opacity is set to 0 fillOpacity: 0, label: name, labelOutlineColor: "Black", labelOutlineWidth: 3, fontSize: 14, fontColor: "Pink", fontOpacity: 0.85, fontWeight: "bold" }; var ring = new OL.Geometry.LinearRing(convertPoints(groupPoints)); var polygon = new OL.Geometry.Polygon([ ring ]); var feature = new OL.Feature.Vector(polygon, { name: name }, style); raidLayer.addFeatures([ feature ]); } function createLayerToggler(parentGroup, checked, name, toggleCallback) { var normalizedName = name.toLowerCase().replace(/\s/g, ''); var group = document.createElement('li'); var groupToggler = document.createElement('div'); groupToggler.className = 'controls-container toggler'; var groupSwitch = document.createElement('input'); groupSwitch.id = 'layer-switcher-group_' + normalizedName; groupSwitch.className = 'layer-switcher-group_' + normalizedName + ' toggle'; groupSwitch.type = 'checkbox'; groupSwitch.checked = checked; groupSwitch.addEventListener('click', function() { toggleCallback(groupSwitch.checked); }); groupToggler.appendChild(groupSwitch); var groupLabel = document.createElement('label'); groupLabel.htmlFor = groupSwitch.id; groupLabel.style.display = 'block'; var groupLabelText = document.createElement('div'); groupLabelText.className = 'label-text'; groupLabelText.style.textOverflow = 'ellipsis'; groupLabelText.style.overflowX = 'hidden'; groupLabelText.appendChild(document.createTextNode(name)); groupLabel.appendChild(groupLabelText); groupToggler.appendChild(groupLabel); group.appendChild(groupToggler); if (parentGroup !== null) { parentGroup.querySelector('input.toggle').addEventListener('click', function(e) { groupSwitch.disabled = !e.target.checked; if (toggleCallback) { toggleCallback(groupSwitch.checked && e.target.checked); } }); parentGroup.querySelector('ul.children').appendChild(group); } else { group.className = 'group'; groupToggler.classList.add('main'); var groupChildren = document.createElement('ul'); groupChildren.className = 'children'; group.appendChild(groupChildren); document.querySelector('.list-unstyled.togglers').appendChild(group); } return group; } function displayCurrentRaidLocation() { var raidMapCenter = Waze.map.getCenter(); var raidCenterPoint = new OL.Geometry.Point(raidMapCenter.lon, raidMapCenter.lat); var locationDiv = document.querySelector('#topbar-container > div > div > div.location-info-region > div'); var mapRaidDiv = locationDiv.querySelector('strong'); if (mapRaidDiv === null) { mapRaidDiv = document.createElement('strong'); mapRaidDiv.style.marginLeft = '5px'; locationDiv.appendChild(mapRaidDiv); } for (i = 0; i < mapLayer.features.length; i++) { if (mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint)) { mapRaidDiv.textContent = '[MapRaid Region: ' + mapLayer.features[i].attributes.name + ']'; displayedArea = true; return; } } if (displayedArea) { mapRaidDiv.textContent = ''; displayedArea = false; } } function initMapRaidOverlay() { if (typeof Waze === 'undefined' || typeof Waze.map === 'undefined' || typeof Waze.loginManager === 'undefined' || !document.querySelector('#topbar-container > div > div > div.location-info-region > div') || !document.getElementById('layer-switcher-group_display')) { setTimeout(initMapRaidOverlay, 800); return; } if (!Waze.loginManager.user) { Waze.loginManager.events.register("login", null, initMapRaidOverlay); Waze.loginManager.events.register("loginStatus", null, initMapRaidOverlay); if (!Waze.loginManager.user) { return; } } if (localStorage.MapRaidArgentinaVisible === undefined) { localStorage.MapRaidArgentinaVisible = true; } createLayerToggler(document.getElementById('layer-switcher-group_display').parentNode.parentNode, localStorage.MapRaidArgentinaVisible == "true", 'Map Raid: Argentina', function(checked) { localStorage.MapRaidArgentinaVisible = checked; mapLayer.setVisibility(checked); }); mapLayer = new OL.Layer.Vector("Argentina MapRaid Regions", { uniqueName: "__ArgentinaMapRaid" }); addRaidPolygon(mapLayer, [ [-55.269470,-26.882880],[-54.720154,-26.428691],[-54.687195,-25.928407],[-54.654236,-25.636574],[-54.578900,-25.580180],[-54.401550,-25.577131],[-54.151611,-25.485431],[-53.857727,-25.634038],[-53.791809,-25.980680],[-53.627074,-26.197341],[-53.684692,-26.743158],[-53.654480,-26.900028],[-53.811035,-27.181356],[-54.280701,-27.459539],[-54.684448,-27.588632],[-55.269470,-26.882880] ], '#000000', 'Area 1'); addRaidPolygon(mapLayer, [ [-57.689209,-27.3311515],[-56.493073,-27.507053],[-56.107178,-27.305893],[-55.890198,-27.354692],[-55.850372,-27.416881],[-55.735016,-27.440040],[-55.593567,-27.158142],[-55.269470,-26.882880],[-54.684448,-27.588632],[-55.630646,-28.300753],[-56.163483,-28.768863],[-57.689209,-27.331515] ], '#000000', 'Area 2'); addRaidPolygon(mapLayer, [ [-58.890839,-27.449790],[-58.624420,-27.309553],[-58.422546,-27.264396],[-58.009186,-27.254630],[-57.689209,-27.331515],[-56.163483,-28.768863],[-56.593323,-29.203720],[-56.782837,-29.476666],[-57.135773,-29.789409],[-59.158630,-28.800157],[-59.100952,-28.173718],[-58.864746,-27.994401],[-58.890839,-27.449790] ], '#000000', 'Area 3'); addRaidPolygon(mapLayer, [ [-59.158630,-28.800157],[-57.135773,-29.789409],[-57.595825,-30.206861],[-57.644990,-30.339020],[-57.723330,-30.383740],[-58.047420,-30.575170],[-58.231470,-30.289890],[-59.702454,-30.391830],[-59.672241,-29.821583],[-59.540405,-29.365421],[-59.501953,-29.216905],[-59.158630,-28.800157] ], '#000000', 'Area 4'); Waze.map.addLayer(mapLayer); mapLayer.setVisibility(localStorage.MapRaidArgentinaVisible == "true"); var areaJumper = document.getElementById('mapraidDropdown'); if (!areaJumper) { areaJumper = document.createElement('select'); areaJumper.id = 'mapraidDropdown'; areaJumper.style.marginTop = '4px'; areaJumper.style.display = 'block'; var areaPlaceholder = document.createElement('option'); areaPlaceholder.textContent = 'Jump to Map Raid area'; areaJumper.appendChild(areaPlaceholder); areaJumper.addEventListener('change', function() { Waze.map.setCenter(areaJumper.selectedOptions[0].centroid); areaJumper.selectedIndex = 0; areaJumper.blur(); }); } var areaJumperRegion = document.createElement('optgroup'); areaJumperRegion.label = 'Argentina (Abr 16 - Abr 23, 2018)'; mapLayer.features.forEach(function(feature) { var area = document.createElement('option'); area.textContent = feature.attributes.name; area.centroid = feature.geometry.getCentroid().toLonLat(); areaJumperRegion.appendChild(area); }); areaJumper.appendChild(areaJumperRegion); if (!document.getElementById('mapraidDropdown')) { // Deal with new layout if (window.getComputedStyle(document.getElementById('edit-buttons').parentNode).display == 'flex') { var areaJumperContainer = document.createElement('div'); areaJumperContainer.style.flexGrow = '1'; areaJumperContainer.style.paddingTop = '6px'; areaJumper.style.width = '80%'; areaJumper.style.margin = '0 auto'; areaJumperContainer.appendChild(areaJumper); document.getElementById('edit-buttons').parentNode.insertBefore(areaJumperContainer, document.getElementById('edit-buttons')); } else { document.getElementById('edit-buttons').parentNode.insertBefore(areaJumper, document.getElementById('edit-buttons')); } } displayCurrentRaidLocation(); Waze.map.events.register("moveend", null, displayCurrentRaidLocation); Waze.map.events.register("zoomend", null, displayCurrentRaidLocation); }