WME Permalink to several Maps DACH

WME PTSM für Deutschland Österreich Schweiz

Versione datata 04/02/2023. Vedi la nuova versione l'ultima versione.

Autore
Horst Wittlich
Valutazione
0 0 0
Versione
2023.02.04
Creato il
23/07/2022
Aggiornato il
04/02/2023
Dimensione
20,2 KB
Licenza
MIT
Applica a

// ==UserScript==
// @name WME Permalink to several Maps DACH
// @description WME PTSM für Deutschland Österreich Schweiz
// @namespace https://greasyfork.org/de/users/863740-horst-wittlich
// @version 2023.02.04
// @match https://*.waze.com/editor*
// @match https://*.waze.com/*/editor*
// @match https://beta.waze.com/editor*
// @match https://beta.waze.com/*/editor*
// @icon https://i.ibb.co/ckSvk59/waze-icon.png
// @grant none
// @license MIT
// ==/UserScript==

/* global OpenLayers */
/* global W */
/* global proj4 */
/* glo bal firstProj */
/* glo bal newtab */
var ptsmVersion = '2023.02.04'
// yyyy.mm.dd
/* eslint-env jquery */ // we are working with jQuery
// indicate used variables to be assigned

// currently not in use, but leaving code as a claculation reference
/*
double[] WGS84toGoogleBing(double lon, double lat) {
double x = lon * 20037508.34 / 180;
double y = Math.Log(Math.Tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180);
y = y * 20037508.34 / 180;
return new double[] {x, y};
}

double[] GoogleBingtoWGS84Mercator (double x, double y) {
double lon = (x / 20037508.34) * 180;
double lat = (y / 20037508.34) * 180;

lat = 180/Math.PI * (2 * Math.Atan(Math.Exp(lat * Math.PI / 180)) - Math.PI / 2);
return new double[] {lon, lat};
}

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);
}
*/

function getCenterZoom() {
var map = W.map.getOLMap()
var zoom = map.getZoom()
var center = map.getCenter().transform(new OpenLayers.Projection('EPSG:900913'), new OpenLayers.Projection('EPSG:4326'))
center.zoom = zoom
return center
}

function addButtons() {
if (document.getElementById('user-info') == null) {
setTimeout(addButtons, 500)
console.log('user-info element not yet available, page still loading')
return
}
if (!W.loginManager.user) {
W.loginManager.events.register('login', null, addButtons)
W.loginManager.events.register('loginStatus', null, addButtons)
// Double check as event might have triggered already
if (!W.loginManager.user) {
return
}
}
if ("undefined" == typeof proj4) {
// Using Proj4js to transform coordinates. See http://proj4js.org/
var script = document.createElement('script') // dynamic load the library from https://cdnjs.com/libraries/proj4js
script.type = 'text/javascript'
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4.js'
document.getElementsByTagName('head')[0].appendChild(script) // Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead)
}
// Style sheet for buttons
var style = document.createElement('style')
style.type = 'text/css'
style.append('#sidepanel-ptsm > div { margin-bottom: 1em; }')
style.append('#sidepanel-ptsm button { color: inherit;text-align: left; padding-left: 22px; padding-right: 0; margin: 1.5%; width: 30%; height: 24px; font-size: 80%; background-repeat: no-repeat; border-radius: 7px; }')
style.append('#sidepanel-ptsm .txtbtn { width: 96%;text-align: center;font-weight: bold;border: 1px solid silver;background-color: ghostwhite; }')
document.getElementsByTagName('head')[0].appendChild(style)

/*
var btn0 = $('ß-Switch');
btn0.click(function() {
var mapsUrl;
// var href = $('.WazeControlPermalink a').attr('href');
var href = document.getElementsByClassName('WazeControlPermalink')[0].getElementsByClassName('fa fa-link permalink')[0].href;
var lon = getQueryString(href, 'lon');
var lat = getQueryString(href, 'lat');
var zoom = parseInt(getQueryString(href, 'zoom'));
var newzoom = document.W.map.zoom;

// alert(href);
var beta = href.indexOf('beta');
if (beta >= 0) {
// mapsUrl = 'https://www.waze.com/editor/?lon=' + lon + '&lat=' + lat + '&zoom=' + (zoom-12);
mapsUrl = href.replace('beta', 'www');
// alert("beta->www: " + mapsUrl);

} else {
// mapsUrl = 'https://beta.waze.com/editor/?lon=' + lon + '&lat=' + lat + '&zoom=' + zoom;
mapsUrl = href.replace('www', 'beta');
// alert("www->beta: " + mapsUrl);
}
window.open(mapsUrl);
});
*/

var btn1 = $('Google')
btn1.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://www.google.com/maps/@' + cz.lat + ',' + cz.lon + ',' + cz.zoom + 'z/data=!5m1!1e1'
window.open(mapsUrl, '_blank');
})

var btn5 = $('Apple')
btn5.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://duckduckgo.com/?q=' + cz.lat + ',' + cz.lon + ',' + cz.zoom + '&iaxm=maps'
window.open(mapsUrl, '_blank');
})

var btn2 = $('Bing')
btn2.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://www.bing.com/maps/traffic?cp=' + cz.lat + '~' + cz.lon + '&lvl=' + cz.zoom
window.open(mapsUrl, '_blank');
})

var btn3 = $('Ver. NRW')
btn3.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://www.verkehr.nrw/?center=' + cz.lat + ',' + cz.lon + '&zoom=' + cz.zoom + '&car=true&publicTransport=true&bike=true&layer=Verkehrslage,Haltestellen,Parken,Webcams,Verkehrsmeldungen,Baustellen,Luftbild,ELadesaeulen,Tankstellen&highlightRoute=false'
window.open(mapsUrl, '_blank');
})

var btn3a = $('OSM')
btn3a.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'http://www.openstreetmap.org/#map=' + cz.zoom + '/' + cz.lat + '/' + cz.lon
window.open(mapsUrl, '_blank');
})

var btn3b = $('OSM/bing')
btn3b.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'http://mvexel.dev.openstreetmap.org/bingimageanalyzer/?lat=' + cz.lat + '&lon=' + cz.lon + '&zoom=' + cz.zoom
window.open(mapsUrl, '_blank');
})

// http://www.viamichelin.de/print/map?latitude=48.2638198&longitude=16.423198&zoom=16&address=&departure&arrival
var btn9 = $('ViaM')
btn9.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'http://www.viamichelin.de/web/Traffic?position=' + cz.lat + ';' + cz.lon + ';' + cz.zoom
window.open(mapsUrl, '_blank');
})

// https://wego.here.com/traffic/explore?map=51.44015,7.06547,12,satellite_traffic
var btn10 = $('Here')
btn10.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://wego.here.com/traffic/explore?map=' + cz.lat + ',' + cz.lon + ',' + cz.zoom + ',traffic'
window.open(mapsUrl, '_blank');
})

var btn95 = $('Stats')
btn95.click(() => {
var mapsUrl = 'https://www.revolvermaps.com/livestats/5d8h9swr38l/'
window.open(mapsUrl, '_blank');
})

// https://www.mapillary.com/app/?lat=49.97940953634415&lng=9.127301585621836&z=14.19223566766781&focus=map
var btn11 = $('Mapillary')
btn11.click(() => {
var cz = getCenterZoom()
cz.zoom = 0.991 * cz.zoom - 1.0997
var mapsUrl = 'https://www.mapillary.com/app/?lat=' + cz.lat + '&lng=' + cz.lon + '&z=' + cz.zoom
window.open(mapsUrl, '_blank');
})

// https://www.openstreetbrowser.org/#map=18/51.18321/6.71228&categories=car_maxspeed
var btn12 = $('OSBrowser')
btn12.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://www.openstreetbrowser.org/#map=' + cz.zoom + '/' + cz.lat + '/' + cz.lon + '&categories=car_maxspeed'
window.open(mapsUrl, '_blank');
})

// https://en.mappy.com/#/12/M2/THome/N0,0,15.69021,48.4738/Z19/ does not work
// https://en.mappy.com/plan#/51.52085,7.47023 no zoom syntax found
var btn13 = $('Mappy')
btn13.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://en.mappy.com/plan#/' + cz.lat + ',' + cz.lon
window.open(mapsUrl, '_blank');
})

// https://map.atudo.com/v4/?lat=52.1548982153146&lng=10.4580277141803&zoom=30
var btn14 = $('Blitzer.de')
btn14.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://map.atudo.com/v4/?lat=' + cz.lat + '&lng=' + cz.lon + '&zoom=' + cz.zoom
window.open(mapsUrl, '_blank');
})

// https://www.msn.com/de-de/traffic?locale=de-de&cp=51.23013,%206.82414&lvl=19&sty=h
var btn15 = $('MSN')
btn15.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://www.msn.com/de-de/traffic?locale=de-de&cp=' + cz.lat + ',%20' + cz.lon + '&lvl=' + cz.zoom
window.open(mapsUrl, '_blank');
})

// https://geoportal.bayern.de/bayernatlas/index.html?zoom=9&lang=de&topic=ba&bgLayer=atkis&catalogNodes=11,122&E=639436.74&N=5324591.68
var btn16 = $('BY Atlas')
btn16.click(() => {
var cz = getCenterZoom()
cz.zoom -= 5

if (!proj4) {
console.log('proj4 not loaded :-(')
return
}

var firstProj = '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'
var utm = proj4(firstProj, [cz.lon, cz.lat])
var mapsUrl = 'https://geoportal.bayern.de/bayernatlas/index.html?zoom=' + cz.zoom + '&E=' + utm[0] + '&N=' + utm[1]
window.open(mapsUrl, '_blank');
})

// http://frink.bplaced.de/blitzer/#map=11/51.9026/10.5036
var btn17 = $('OSM Blitzer')
btn17.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'http://frink.bplaced.de/blitzer/#map=' + cz.zoom + '/' + cz.lat + '/' + cz.lon
window.open(mapsUrl, '_blank');
})

// https://mydrive.tomtom.com/de_de/#mode=viewport+viewport=49.76137,9.70753,15,0,-0+ver=3
var btn18 = $('TomTom')
btn18.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://mydrive.tomtom.com/de_de/#mode=viewport+viewport=' + cz.lat + ',' + cz.lon + ',' + cz.zoom + ',0,-0+ver=3'
window.open(mapsUrl, '_blank');
})

var btn19 = $('Basemap.de')
btn19.click(() => {
var cz = getCenterZoom()
cz.zoom = 0.985 * cz.zoom - 1.05
var mapsUrl = 'https://basemap.de/viewer?config=' + btoa('{"lat":' + cz.lat + ',"lon":' + cz.lon + ',"zoom":' + cz.zoom + ',"styleID":0,"pitch":0,"bearing":0,"saturation":0,"brightness":0,"hiddenControls":[],"hiddenLayers":[],"changedLayers":[],"hiddenSubGroups":[],"changedSubGroups":[],"externalStyleURL":""}')
window.open(mapsUrl, '_blank');
})

// Waze Reportingtool: https://www.waze.com/reporting/location?lat=49.50939698036761&lng=6.743288040161134&zoom=16
var btn20 = $('Reporting')
btn20.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://www.waze.com/reporting/location?lat=' + cz.lat + '&lng=' + cz.lon + '&zoom=' + cz.zoom
window.open(mapsUrl, '_blank');
})

// https://kartaview.org/map/@48.110432829485546,11.527876853942873,16z
var btn21 = $('KartaView')
btn21.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://kartaview.org/map/@' + cz.lat + ',' + cz.lon + ',' + cz.zoom + 'z'
window.open(mapsUrl, '_blank');
})

// https://bayerninfo.de/de/baustellenkalender?geo=48.084776,11.196357&zoom=16
var btn22 = $('Bayerninfo')
btn22.click(() => {
var cz = getCenterZoom()
cz.zoom -= 2

var now = new Date()
var then = new Date()
then.setDate(then.getDate() + 60)

let mapsUrl = 'https://www.bayerninfo.de/de/baustellenkalender?geo=' + cz.lat + ',' + cz.lon + '&zoom=' + cz.zoom
mapsUrl = mapsUrl + '&datetimeFrom=' + now.toISOString() + '&datetimeTo=' + then.toISOString()
window.open(mapsUrl, '_blank');
})

var btn30 = $('TimOnline')
btn30.click(() => {
var cz = getCenterZoom()
cz.zoom = 454959671.96858*Math.exp(-0.693*cz.zoom)
var mapsUrl = 'https://www.tim-online.nrw.de/tim-online2/?center=' + cz.lat + ',' + cz.lon + '&scale=' + cz.zoom
window.open(mapsUrl, '_blank');
})

var btn31 = $('GeoAdmin')
btn31.click(() => {
var cz = getCenterZoom()
cz.zoom -= 7.2
var phi1 = ((cz.lat * 3600) - 169028.66) / 10000
var lmd1 = ((cz.lon * 3600) - 26782.5) / 10000
var x = 200147.07 + 308807.95 * phi1 + 3745.25 * lmd1 * lmd1 + 76.63 * phi1 * phi1 + 119.79 * phi1 * phi1 * phi1 - 194.56 * lmd1 * lmd1 * phi1
var y = 600072.37 + 211455.93 * lmd1 - 10938.51 * lmd1 * phi1 - 0.36 * lmd1 * phi1 * phi1 - 44.54 * lmd1 * lmd1 * lmd1
var mapsUrl = 'https://map.geo.admin.ch/?zoom=11&topic=ech&lang=de&bgLayer=ch.swisstopo.pixelkarte-farbe&layers=ch.bfs.gebaeude_wohnungs_register,ch.kantone.cadastralwebmap-farbe,ch.swisstopo.swissimage-product,ch.bfe.ladestellen-elektromobilitaet&catalogNodes=457,532,687,458,477,485,491,510,527,1743&layers_visibility=false,false,true,true&layers_timestamp=,,current&Y='+y.toFixed(0)+'&X='+x.toFixed(0);
window.open(mapsUrl,'_blank');
});

var btn32 = $('Basemap')
btn32.click(() => {
var cz = getCenterZoom()
var x = cz.lon / 180 * 20037508.34
let y = Math.log(Math.tan((90 + cz.lat * 1) * Math.PI / 360)) / Math.PI
y *= 20037508.34
var mapsUrl = 'https://basemap.at/bmapp/index.html#{"center":[' + x.toFixed(10) + ',' + y.toFixed(10) + '],"zoom":' + cz.zoom + ',"rotation":0,"layers":"1000000000"}'
window.open(mapsUrl, '_blank');
})

var btn33 = $('Flitsmeister')
btn33.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://atlas.be-mobile.biz/?config=5ddd1adc6e70042b20b6e405&language.language=de_DE&futureEvents=true&tmcBasedEvents=true&@=map_' + cz.lat + ',' + cz.lon + ',' + cz.zoom
window.open(mapsUrl, '_blank');
})

var btn34 = $('ADAC')
btn34.click(() => {
var cz = getCenterZoom()
cz.zoom -= 1
var mapsUrl = 'https://maps-alt.adac.de/Default.aspx?preset=true&ID=143&Kategorie=Verkehrslage&StartRect=' + cz.lon + ',' + cz.lat + ',' + cz.zoom
window.open(mapsUrl, '_blank');
})

var btn34b = $('ADAC Neu')
btn34b.click(() => {
var box = W.map.getOLMap().calculateBounds().transform(new OpenLayers.Projection('EPSG:900913'), new OpenLayers.Projection('EPSG:4326'))
var mapsUrl = 'https://maps.adac.de/?traffic=announcements,construction,flow&bounds=' + box.bottom + ',' + box.left +'-' + box.top + ',' + box.right
window.open(mapsUrl, '_blank');
})

var btn36 = $('Here Edit')
btn36.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://mapcreator.here.com/?l=' + cz.lat + ',' + cz.lon + ',' + cz.zoom + ',autoselect'
window.open(mapsUrl, '_blank');
})

var btn37 = $('Umsehen')
btn37.click(() => {
var cz = getCenterZoom()
var mapsUrl = 'https://maps.apple.com/?ll=' + cz.lat + ',' + cz.lon + 'z=' + cz.zoom
window.open(mapsUrl, '_blank');
})

var btn38 = $('DOP Viewer');
btn38.click(function(){
var cz = getCenterZoom()
cz.zoom -= 3
var mapsUrl = 'https://sg.geodatenzentrum.de/dop_viewer/viewer.html#lat=' + cz.lat + '&lon=' + cz.lon + '&zoom=' + cz.zoom + '&webatlasde=true&dop40=false&layer_4=false&layer_3=false&layer_2=false&layer_1=false';
window.open(mapsUrl,'_blank');
});

// alert("Create Tab");
let userTabs = document.getElementById('user-info')
let navTabs = document.getElementsByClassName('nav-tabs', userTabs)[0]
let tabContent = document.getElementsByClassName('tab-content', userTabs)[0]
let newtab = ''

newtab = document.createElement('li')
newtab.innerHTML = 'PTSM'
navTabs.appendChild(newtab)

// add new box to left of the map
let addon = document.createElement('section')
addon.id = 'sidepanel-ptsm'
addon.className = 'tab-pane'
tabContent.appendChild(addon)

let divInfo = $('

')
let divAllgem = $('

')
let divBaustell = $('

')
let divBlitzer = $('

')
let divBilder = $('

')
let divGeoPort = $('

')
let divMisc = $('

')

let txtinfo = $('Auf Updates überprüfen / V' + ptsmVersion + '')
let txtbtn1 = $('ALLGEMEINE KARTEN')
let txtbtn2 = $('BLITZER')
let txtbtn3 = $('GESCHWINDIGKEITEN / BILDER')
let txtbtn4 = $('GEOPORTALE')
let txtbtn5 = $('MISC')
let txtbtn6 = $('BAUSTELLEN')
let safeSourcesText = $('

Hinweis: Einige der externen Karten sind als Informationsquelle zur Kartenbearbeitung nicht zulässig!

')

$('#sidepanel-ptsm').append(divInfo)
divInfo.append(txtinfo)

$('#sidepanel-ptsm').append(divAllgem)
divAllgem.append(txtbtn1) // ¦¦¦¦¦ "ALLGEMEINE KARTEN" ¦¦¦¦¦
divAllgem.append(btn1) // GOOGLE
divAllgem.append(btn2) // BING
divAllgem.append(btn3a) // OSM
divAllgem.append(btn9) // VIAM
divAllgem.append(btn10) // HERE
divAllgem.append(btn13) // MAPPY
divAllgem.append(btn18) // TOMTOM
divAllgem.append(btn5) // Apple
divAllgem.append(btn38) // DOP Viewer

$('#sidepanel-ptsm').append(divBaustell)
divBaustell.append(txtbtn6) // ¦¦¦¦¦ "BAUSTELLEN" ¦¦¦¦¦
divBaustell.append(btn34) // ADAC
divBaustell.append(btn15) // MSN
divBaustell.append(btn3) // Verkehr NRW

$('#sidepanel-ptsm').append(divBlitzer)
divBlitzer.append(txtbtn2) // ¦¦¦¦¦ "BLITZER" ¦¦¦¦¦
divBlitzer.append(btn14) // Blitzer.de
divBlitzer.append(btn17) // OSM BLITZER
divBlitzer.append(btn33) // Flitsmeister

$('#sidepanel-ptsm').append(divBilder)
divBilder.append(txtbtn3) // ¦¦¦¦¦ "GESCHWINDIGKEITEN / BILDER" ¦¦¦¦¦
divBilder.append(btn11) // MAPILLARY
divBilder.append(btn21) // KARTAVIEW
divBilder.append(btn12) // OSBROWSER

$('#sidepanel-ptsm').append(divGeoPort)
divGeoPort.append(txtbtn4) // ¦¦¦¦¦ "GEOPORTALE" ¦¦¦¦¦
divGeoPort.append(btn19) // WEBATLAS
divGeoPort.append(btn32) // Basemap.at
divGeoPort.append(btn31) // GEOADMIN
divGeoPort.append(btn30) // TIM
divGeoPort.append(btn16) // BAYERNATLAS
divGeoPort.append(btn22) // BAYERNINFO

$('#sidepanel-ptsm').append(divMisc)
divMisc.append(txtbtn5) // ¦¦¦¦¦ "Misc" ¦¦¦¦¦
divMisc.append(btn20) // Waze Report
divMisc.append(btn36) // Here Editor
divMisc.append(btn37) // Apple Umsehen
divMisc.append(btn95) // STATS

$('#sidepanel-ptsm').append(safeSourcesText)
}

addButtons()