WME MapRaid Overlay

Creates polygons for MapRaid groups in a WME "MapRaid Groups" layer

// ==UserScript==
// @name                WME MapRaid Overlay
// @namespace           https://gf.qytechs.cn/users/5252
// @description         Creates polygons for MapRaid groups in a WME "MapRaid Groups" layer
// @include             https://www.waze.com/editor/*
// @include             https://www.waze.com/*/editor/*
// @include             https://editor-beta.waze.com/*
// @version             2.0
// @grant               none
// @license             http://creativecommons.org/licenses/by-nc-sa/3.0/
// @copyright           2014 davielde
// ==/UserScript==


function bootstrap_MapRaidOverlay()
{
  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();
    }) ();
  }

    /* begin running the code! */
    setTimeout(InitMapRaidOverlay, 1000);
}

function AddRaidPolygon(raidLayer,groupPoints,groupColor,groupNumber){
    
    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;
    var raidGroupLabel = 'Raid Group ' + groupNumber;
    var groupName = 'RaidGroup' + groupNumber;
    
    var style = {
        strokeColor: groupColor,
        strokeOpacity: .8,
        strokeWidth: 3,
        fillColor: groupColor,
        fillOpacity: 0.15,
        label: raidGroupLabel,
        labelOutlineColor: "black",
        labelOutlineWidth: 3,
        fontSize: 14,
        fontColor: groupColor,
        fontOpacity: .85,
        fontWeight: "bold"  
    };
    
    var attributes = {
        name: groupName,
        number: groupNumber
    };
    
    var pnt= [];
    for(i=0;i<groupPoints.length;i++){
        convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.getProjectionObject());
        //console.log('MapRaid: ' + JSON.stringify(groupPoints[i]) + ', ' + groupPoints[i].lon + ', ' + groupPoints[i].lat);
        pnt.push(convPoint);
    }
		       
    var ring = new mro_OL.Geometry.LinearRing(pnt);
    var polygon = new mro_OL.Geometry.Polygon([ring]);
    
    var feature = new mro_OL.Feature.Vector(polygon,attributes,style);
    raidLayer.addFeatures([feature]);

}

function CurrentRaidLocation(raid_mapLayer){
    var mro_Map = unsafeWindow.Waze.map;

    for(i=0;i<raid_mapLayer.features.length;i++){
        var raidMapCenter = mro_Map.getCenter();
        var raidCenterPoint = new OpenLayers.Geometry.Point(raidMapCenter.lon,raidMapCenter.lat);
        var raidCenterCheck = raid_mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint);
        //console.log('MapRaid: ' + raid_mapLayer.features[i].attributes.number + ': ' + raidCenterCheck);
        if(raidCenterCheck === true){
        	var raidLocationLabel = 'Raid Group ' + raid_mapLayer.features[i].attributes.number + ' - ' + $('.WazeControlLocationInfo').text();
    		setTimeout(function(){$('.WazeControlLocationInfo').text(raidLocationLabel)},200);
        }
    }
}

function InitMapRaidOverlay(){

    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;

    //create overlay layer and add to WME map
    var mro_mapLayers = mro_Map.getLayersBy("uniqueName","__MapRaidGroups");
    var raid_mapLayer = new mro_OL.Layer.Vector("MapRaid Groups", {
        displayInLayerSwitcher: true,
        uniqueName: "__MapRaidGroups"
    });
    I18n.translations.en.layers.name["__MapRaidGroups"] = "MapRaid Groups";
    mro_Map.addLayer(raid_mapLayer);
    raid_mapLayer.setVisibility(true);
    
    
    //replace groupPoints with custom coordinates, add or remove groups as needed (sample data is from fifteen groups in the Los Angeles, California area)
    var group1Points = [{lon:'-118.95163500000001',lat:'34.027766400000004'},{lon:'-118.800847',lat:'34.171126'},{lon:'-118.76598400000002',lat:'34.504859'},{lon:'-119.350212',lat:'34.466199'},{lon:'-119.25176',lat:'34.120812'},{lon:'-118.95163500000001',lat:'34.027766400000004'}];
    var group2Points = [{lon:'-118.275804',lat:'34.125588'},{lon:'-118.386803',lat:'34.507096'},{lon:'-118.53399999999999',lat:'34.522'},{lon:'-118.76667',lat:'34.504859'},{lon:'-118.800847',lat:'34.171126'},{lon:'-118.275804',lat:'34.125588'}];
    var group3Points = [{lon:'-118.02955600000001',lat:'34.4658066'},{lon:'-118.386803',lat:'34.5048326'},{lon:'-118.275804',lat:'34.1233143'},{lon:'-118.02749600000001',lat:'34.0281928'},{lon:'-118.02955600000001',lat:'34.4658066'}];
    var group4Points = [{lon:'-118.02955600000001',lat:'34.46807100000001'},{lon:'-118.02749600000001',lat:'34.030469'},{lon:'-117.701112',lat:'33.90416400000001'},{lon:'-117.74322500000001',lat:'34.439761'}];
    var group5Points = [{lon:'-117.631988',lat:'33.97867'},{lon:'-117.30673',lat:'33.965632'},{lon:'-117.470935',lat:'34.408408'},{lon:'-117.74322500000001',lat:'34.439761'},{lon:'-117.701112',lat:'33.90416400000001'},{lon:'-117.631988',lat:'33.97867'}];
    var group6Points = [{lon:'-117.470935',lat:'34.408408'},{lon:'-117.30673',lat:'33.965632'},{lon:'-117.296435',lat:'33.94353'},{lon:'-116.77539800000001',lat:'33.926554'},{lon:'-116.68616400000002',lat:'34.320323'},{lon:'-117.470935',lat:'34.408408'}];
    var group7Points = [{lon:'-118.800847',lat:'34.171126'},{lon:'-118.96674120000002',lat:'34.014676800000004'},{lon:'-118.4744162',lat:'33.95603229999999'},{lon:'-118.36386699999998',lat:'33.995038'},{lon:'-118.275804',lat:'34.125588'},{lon:'-118.800847',lat:'34.171126'}];
    var group8Points = [{lon:'-118.3635239',lat:'33.9953229'},{lon:'-118.47510280000002',lat:'33.9560323'},{lon:'-118.4237691',lat:'33.8742609'},{lon:'-118.19134659999999',lat:'33.8757607'},{lon:'-118.17006199999999',lat:'33.9953955'},{lon:'-118.3635239',lat:'33.9953229'}];    
    var group9Points = [{lon:'-118.20087539999999',lat:'34.0953126'},{lon:'-118.2751171',lat:'34.123878399999995'},{lon:'-118.36386699999998',lat:'33.995038'},{lon:'-118.16937540000002',lat:'33.99539550000001'},{lon:'-118.15384149999998',lat:'34.0768304'},{lon:'-118.20087539999999',lat:'34.0953126'}];
    var group10Points = [{lon:'-118.19066',lat:'33.87576070000001'},{lon:'-118.01762600000002',lat:'33.877186'},{lon:'-117.89016700000002',lat:'33.977816'},{lon:'-118.15452600000002',lat:'34.07854'},{lon:'-118.19066',lat:'33.87576070000001'}];
    var group11Points = [{lon:'-118.424112',lat:'33.873976'},{lon:'-118.4408565',lat:'33.7283358'},{lon:'-118.1609698',lat:'33.6743502'},{lon:'-118.0766846',lat:'33.807034'},{lon:'-118.05266300000001',lat:'33.8458175'},{lon:'-118.01762600000002',lat:'33.877186,'},{lon:'-118.424112',lat:'33.873976'}];
    var group12Points = [{lon:'-117.89016700000002',lat:'33.977816'},{lon:'-118.01762600000002',lat:'33.877186'},{lon:'-118.0547048',lat:'33.8426885'},{lon:'-118.13006590000002',lat:'33.7263337'},{lon:'-117.95025030000001',lat:'33.6048915'},{lon:'-117.666316',lat:'33.858438'},{lon:'-117.701112',lat:'33.904734'},{lon:'-117.89016700000002',lat:'33.977816'}];
    var group13Points = [{lon:'-117.95025030000001',lat:'33.6048915'},{lon:'-117.64891640000002',lat:'33.394536300000006'},{lon:'-117.35870399999999',lat:'33.425711'},{lon:'-117.666316',lat:'33.858438'},{lon:'-117.95025030000001',lat:'33.6048915'}];
    var group14Points = [{lon:'-117.30673',lat:'33.965632'},{lon:'-117.631988',lat:'33.97867'},{lon:'-117.701112',lat:'33.90416400000001'},{lon:'-117.35870399999999',lat:'33.425711'},{lon:'-117.132454',lat:'33.451209'},{lon:'-117.30673',lat:'33.965632'}];
    var group15Points = [{lon:'-117.132454',lat:'33.451209'},{lon:'-116.870973',lat:'33.478575'},{lon:'-116.77539800000001',lat:'33.926554'},{lon:'-117.296435',lat:'33.94353'},{lon:'-117.132454',lat:'33.451209'}];

    //adds polygon from coordinates specified above, change hex color as desired
    AddRaidPolygon(raid_mapLayer,group1Points,"#F4EB37",1);
    AddRaidPolygon(raid_mapLayer,group2Points,"#3F5BA9",2);
    AddRaidPolygon(raid_mapLayer,group3Points,"#EE9C96",3);
    AddRaidPolygon(raid_mapLayer,group4Points,"#F4B400",4);
    AddRaidPolygon(raid_mapLayer,group5Points,"#A61B4A",5);
    AddRaidPolygon(raid_mapLayer,group6Points,"#7CCFA9",6);
    AddRaidPolygon(raid_mapLayer,group7Points,"#4186f0",7);
    AddRaidPolygon(raid_mapLayer,group8Points,"#FFDD5E",8);
    AddRaidPolygon(raid_mapLayer,group9Points,"#795046",9);
    AddRaidPolygon(raid_mapLayer,group10Points,"#DB4436",10);
    AddRaidPolygon(raid_mapLayer,group11Points,"#0BA9CC",11);
    AddRaidPolygon(raid_mapLayer,group12Points,"#795046",12);
    AddRaidPolygon(raid_mapLayer,group13Points,"#7CCFA9",13);
    AddRaidPolygon(raid_mapLayer,group14Points,"#7C3592",14);
    AddRaidPolygon(raid_mapLayer,group15Points,"#A61B4A",15);
    
    //obtains current map center location to determine which group label to apply
    setTimeout(function(){CurrentRaidLocation(raid_mapLayer)},3000);
    mro_Map.events.register("moveend", Waze.map, function(){CurrentRaidLocation(raid_mapLayer)});
    mro_Map.events.register("zoomend", Waze.map, function(){CurrentRaidLocation(raid_mapLayer)});
        
}

bootstrap_MapRaidOverlay(); 

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址