// ==UserScript==
// @name Freedit L1+
// @namespace https://gf.qytechs.cn/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.3.5
// @require http://code.jquery.com/jquery-migrate-1.2.1.js
// @grant none
// ==/UserScript==
// Kopie originálního skriptu davielde/rickzabel https://gf.qytechs.cn/cs/scripts/8443-wme-mega-mapraid-overlay
// Skript vznikal na základě Grepovy myšlenky a velikého přispění spolutvůrce d2-mac, za což moc děkuji.
// Novikny ve verzi : - kosmetické upravy kódu, připrava na další funkce
// - tvary 1 - Obdelník na ležato, 2 - Obdelník na stojato, 3 - čtverec
//--------------------------------------------------------------------------------------
/*definice trvalých proměných*/
//var datum = [];
var nazev = [];
var kraj = [];
var vlozil = [];
var editor = [];
var stav = [];
var vyprsi = [];
var tvar = [];
var link = [];
var konec = 0;
var barva = ["#00BBFF","#FFAE00","#FFFF00","#5E8F47","#FF0000"]; //HTML barvy modrá = #00BBFF oranžová = #FFAE00 žlutá = #FFFF00 zelená = #5E8F47 červená = #FF0000
var zx = [];
var zy = [];
//Obdelník na ležato
var zxl = [0.245760,0.122880,0.061440,0.030720,0.015360,0.007680,0.003840,0.001920,0.000960,0.000480,0.000240];
var zyl = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];
//Obdelní na stojato
var zxs = [0.075562,0.037781,0.018890,0.009445,0.004723,0.002361,0.001181,0.000590,0.000295,0.000148,0.000074];
var zys = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];
//Čtverec
var zxc = [0.136272,0.068136,0.034068,0.017034,0.008517,0.004259,0.002129,0.001065,0.000532,0.000266,0.000133];
var zyc = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];
//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 a vzhled 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 = { //nastavení vzhledu polygonu
strokeColor: groupColor,
strokeOpacity: .7, //pruhlednost čáry
strokeWidth: 2, //toušťka obvodové čáry
fillColor: groupColor,
fillOpacity: 0.10, //průhlednost výplně
label: raidGroupLabel,
labelOutlineColor: "black", //linka kolem textu
labelOutlineWidth: 3, //šířka linky
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 vycuc lon / lat / zoom z permalinku
function getQueryString(link, name)
{
var pos = link.indexOf( name + '=' ) + name.length + 1;
var len = link.substr(pos).indexOf('&');
if (-1 == len) len = link.substr(pos).length;
return link.substr(pos,len);
}
//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 = 'Editorův ráj - '/* + 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);
//začátek
for (var i = 0; i < konec; i++) {
var href = link[i]; //kde link je údaj z tabulky ve sloupci permalink
var x = parseFloat(getQueryString(href, 'lon'));
var y = parseFloat(getQueryString(href, 'lat'));
var zoom = parseInt(getQueryString(href, 'zoom'));
if(tvar[i].indexOf('1') !== -1) {zx = zxl; zy = zyl;}
if(tvar[i].indexOf('2') !== -1) {zx = zxs; zy = zys;}
if(tvar[i].indexOf('3') !== -1) {zx = zxc; zy = zyc;}
var b1x = x - zx[zoom]; var b1y = y + zy[zoom]; var b2x = x + zx[zoom]; var b3y = y - zy[zoom];
var Freedit01 = [{lon:b1x,lat:b1y},{lon:b2x,lat:b1y},{lon:b2x,lat:b3y},{lon:b1x,lat:b3y}];
//alert('stav : ' + stav[i]);
//aktuality - pokud je editor vypiš jmeno, pokud není vypiš atributy
AddRaidPolygon(raid_mapLayer, Freedit01, barva[stav[i]], i+2 + '\n' + nazev[i] + ' (' + kraj[i] + ')\n vložil : ' + vlozil[i] + '\n edituje : ' + editor[i] + '\n zbývá : ' + vyprsi[i] + ' dnů');
}
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);});
}
$.getJSON('https://spreadsheets.google.com/feeds/list/1wywD5uYNmejO_t6Gufzu5tBW0SeVAFdr2KVdeSY1mWg/od6/public/values?alt=json', function(data) {
for (var i = 0; i < data.feed.entry.length; i++) {
//datum[i] = data.feed.entry[i].gsx$datum.$t;
nazev[i] = data.feed.entry[i].gsx$nazev.$t;
kraj[i] = data.feed.entry[i].gsx$kraj.$t;
vlozil[i] = data.feed.entry[i].gsx$vlozil.$t;
editor[i] = data.feed.entry[i].gsx$editor.$t;
stav[i] = data.feed.entry[i].gsx$stav.$t;
vyprsi[i] = data.feed.entry[i].gsx$vyprsi.$t;
tvar[i] = data.feed.entry[i].gsx$tvar.$t;
link[i] += data.feed.entry[i].gsx$permalink.$t;
konec = data.feed.entry.length;
}
});
bootstrap_MapRaidOverlay();
/*--------------------------------------------------------------------------------------
poznámky pod čarou :D
//alert('Hodnota: ' + konec);
lon = lon.replace(".", ","); //změna . na ,
if(zoom == 5) {var zx = 0.006; var zy = 0.0020;}
if(zoom == 4) {var zx = 0.011; var zy = 0.0040;}
if(zoom == 3) {var zx = 0.022; var zy = 0.0080;}
if(zoom == 2) {var zx = 0.044; var zy = 0.0160;}
vytvoření polygonu manualně B1 -> B2 -> B3 -> B4
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,"#00BBFF","01 Poleň");
vytvoření polygonu manuálně z lon / lat / zoom
//FREEDIT 01 https://www.waze.com/cs/editor/?env=row&lon=13.17809&lat=49.42537&layers=2021&zoom=4
var x = 13.17809; //zde zadat z permalinku lon
var y = 49.42537; //zde zadat z permalinku lat
var zoom = 4; //zde hodnotu zoom
if(zoom == 5) {var zx = 0.006; var zy = 0.0020;}
if(zoom == 4) {var zx = 0.011; var zy = 0.0040;}
if(zoom == 3) {var zx = 0.022; var zy = 0.0080;}
if(zoom == 2) {var zx = 0.044; var zy = 0.0160;}
var b1x = x - zx; var b1y = y + zy; var b2x = x + zx; var b3y = y - zy;
var Freedit01 = [{lon:b1x,lat:b1y},{lon:b2x,lat:b1y},{lon:b2x,lat:b3y},{lon:b1x,lat:b3y}];
AddRaidPolygon(raid_mapLayer, Freedit01,"#00BBFF","01 Poleň");
*/