// ==UserScript==
// @name Freedit L1+
// @namespace https://greasyfork.org/cs/users/10038-janek250
// @description Vrstva míst úprav pro nováčky Freedit L1+
// @include https://www.waze.com/editor/*
// @include https://www.waze.com/*/editor/*
// @include https://editor-beta.waze.com/*
// @version 0.01
// @grant none
// ==/UserScript==
// Kopie originálního skriptu davielde/rickzabel https://greasyfork.org/cs/scripts/8443-wme-mega-mapraid-overlay
//--------------------------------------------------------------------------------------
//Vytvoření vrstvy
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);
}
//definování funkce polygonu
function AddRaidPolygon(raidLayer,groupPoints,groupColor,groupNumber){
var mro_Map = unsafeWindow.Waze.map;
var mro_OL = unsafeWindow.OpenLayers;
var raidGroupLabel = 'Freedit ' + 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]);
}
//funkce ??
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);
}
}
}
//funkce inicializace ??
function InitMapRaidOverlay(){
var mro_Map = unsafeWindow.Waze.map;
var mro_OL = unsafeWindow.OpenLayers;
//if (!mro_Map) return;
//if (!mro_OL) return;
var mro_mapLayers = mro_Map.getLayersBy("uniqueName","Freedit L1+");
var raid_mapLayer = new mro_OL.Layer.Vector("Freedit L1+", {
displayInLayerSwitcher: true,
uniqueName: "Freedit L1+"
});
I18n.translations.en.layers.name["Freedit L1+"] = "Freedit L1+";
mro_Map.addLayer(raid_mapLayer);
raid_mapLayer.setVisibility(true);
//vytvoření polygonu manualně S1 -> S2 -> S3 -> S4
var Freedit01 = [{lon:'13.17591',lat:'49.42975'},{lon:'13.18600',lat:'49.42697'},{lon:'13.17283',lat:'49.41340'},{lon:'13.15102',lat:'49.41885'}];
AddRaidPolygon(raid_mapLayer, Freedit01,"#4400FF","Poleň");
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();