// ==UserScript== // @name WME Open Other Maps // @namespace https://greasyfork.org/users/30701-justins83-waze // @version 2017.12.23.01 // @description Links for opening external resources at the WME location // @author JustinS83 // @include https://www.waze.com/editor* // @include https://www.waze.com/*/editor* // @include https://beta.waze.com* // @exclude https://www.waze.com/user/editor* // @require https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js?version=229392 // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; var settings = {}; function initInterface(){ var $section = $("
"); $section.html([ '
', "

The below maps are for reference only and no data should be copied from them as it violates copyright.

Mapillary's streetview is allowed to be used for mapping, while the various sources used for the map are not.


", '
', '
', '
', '
', '
', '
', '
', '', '

Map Language (where applicable)

', 'Do not set a language
', 'Use WME language
', 'Custom language ', '', '
', '
' ].join(' ')); new WazeWrap.Interface.Tab('OOM', $section.html(), init); } function init(){ loadSettings(); setChecked('chkGMaps', settings.GMaps); setChecked('chkMapillary', settings.Mapillary); setChecked('chkTerraserver', settings.Terraserver); setChecked('chkWikimapia', settings.Wikimapia); setChecked('chkBing', settings.Bing); setChecked('chkOSM', settings.OSM); if(settings.LangSetting == 0) setChecked("radOOMNoLang", true); else if(settings.LangSetting == 1) setChecked("radOOMWMELang", true); else setChecked("radOOMCustomLang", true); $('#txtOOMLanguage')[0].value = settings.CustLang; $('.olControlAttribution').css("right", "400px"); LoadMapButtons(); $('.OOMchk').change(function() { var settingName = $(this)[0].id.substr(3); settings[settingName] = this.checked; saveSettings(); LoadMapButtons(); }); $("[id^='rad']").change(function() { if(isChecked("radOOMNoLang")) settings.LangSetting = 0; else if(isChecked("radOOMWMELang")) settings.LangSetting = 1; else settings.LangSetting = 2; saveSettings(); }); $('#txtOOMLanguage').focusout(function(){ settings.CustLang = $('#txtOOMLanguage').val(); saveSettings(); }); } function GetLanguage() { if(isChecked("radOOMNoLang")) return ""; else if(isChecked("radOOMWMELang")) return I18n.currentLocale().replace("en-US", "en"); else //Custom Language return $('#txtOOMLanguage').val(); } function LoadMapButtons() { $('#OOMGMaps').remove(); if(settings.GMaps) { var $section = $("
", {style:"padding:8px 16px"}); $section.html([ '', 'Google Maps', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($section.html()); $('#OOMGMapsImg').click(function(){ let projI = new OpenLayers.Projection("EPSG:900913"); let projE = new OpenLayers.Projection("EPSG:4326"); let center_lonlat = (new OpenLayers.LonLat(Waze.map.center.lon, Waze.map.center.lat)).transform(projI,projE); let lat = Math.round(center_lonlat.lat * 1000000) / 1000000; let lon = Math.round(center_lonlat.lon * 1000000) / 1000000; let lang = GetLanguage(); window.open('https://www.google.com/maps/@' + lat + ',' + lon + ',' + ( W.map.zoom + 12) + 'z' + (lang != "" ? "?hl=" + lang : ""), 'Google Maps'); }); } //************** Mapillary ***************** $('#OOMMapillary').remove(); if(settings.Mapillary){ var $sectionMapillary = $("
", {style:"padding:8px 16px"}); $sectionMapillary.html([ '', 'Mapillary', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($sectionMapillary.html()); $('#OOMMapillaryImg').click(function(){ var projI=new OpenLayers.Projection("EPSG:900913"); var projE=new OpenLayers.Projection("EPSG:4326"); var center_lonlat = (new OpenLayers.LonLat(Waze.map.center.lon, Waze.map.center.lat)).transform(projI,projE); var lat = Math.round(center_lonlat.lat * 1000000) / 1000000; var lon = Math.round(center_lonlat.lon * 1000000) / 1000000; window.open(`https://www.mapillary.com/app/?lat=${lat}&lng=${lon}&z=${( W.map.zoom + 11)}`, 'Mapillary'); }); } //****************** Terraserver ********************* $('#OOMTerraserver').remove(); if(settings.Terraserver){ var $sectionTerraserver = $("
", {style:"padding:8px 16px"}); $sectionTerraserver.html([ '', 'Terraserver', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($sectionTerraserver.html()); $('#OOMTerraserverImg').click(function(){ var center_lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(Waze.map.getCenter().lon,Waze.map.getCenter().lat); window.open(`http://www.terraserver.com/view?utf8=✓&searchLng=${center_lonlat.lon}&searchLat=${center_lonlat.lat}`); }); } //********************* Wikimapia ********************* $('#OOMWikimapia').remove(); if(settings.Wikimapia){ let $sectionWikimapia = $("
", {style:"padding:8px 16px"}); $sectionWikimapia.html([ '', 'Wikimapia', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($sectionWikimapia.html()); $('#OOMWikimapiaImg').click(function(){ //var center_lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(Waze.map.getCenter().lon,Waze.map.getCenter().lat); var projI=new OpenLayers.Projection("EPSG:900913"); var projE=new OpenLayers.Projection("EPSG:4326"); var center_lonlat = (new OpenLayers.LonLat(Waze.map.center.lon, Waze.map.center.lat)).transform(projI,projE); var lat = Math.round(center_lonlat.lat * 1000000) / 1000000; var lon = Math.round(center_lonlat.lon * 1000000) / 1000000; let lang = GetLanguage(); window.open(`http://wikimapia.org/#${(lang != "" ? "lang=" + lang : "")}&lat=${lat}&lon=${lon}&z=${( W.map.zoom + 12)}&m=b`); }); } $('#OOMBing').remove(); if(settings.Bing) { let $sectionBing = $("
", {style:"padding:8px 16px"}); $sectionBing.html([ '', 'Bing Maps', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($sectionBing.html()); $('#OOMBingImg').click(function(){ let projI = new OpenLayers.Projection("EPSG:900913"); let projE = new OpenLayers.Projection("EPSG:4326"); let center_lonlat = (new OpenLayers.LonLat(Waze.map.center.lon, Waze.map.center.lat)).transform(projI,projE); let lat = Math.round(center_lonlat.lat * 1000000) / 1000000; let lon = Math.round(center_lonlat.lon * 1000000) / 1000000; //let lang = I18n.currentLocale().replace("en-US", "en"); window.open(`https://www.bing.com/maps?&cp=${lat}~${lon}&lvl=${( W.map.zoom + 12)}`); }); } $('#OOMOSM').remove(); if(settings.OSM) { //https://www.openstreetmap.org/#map=16/39.5588/-84.2365 let $sectionOSM = $("
", {style:"padding:8px 16px"}); $sectionOSM.html([ '', 'Open Street Map', '' ].join(' ')); $('.view-area.olMap >div > div > div.WazeControlPermalink').append($sectionOSM.html()); $('#OOMOSMImg').click(function(){ let projI = new OpenLayers.Projection("EPSG:900913"); let projE = new OpenLayers.Projection("EPSG:4326"); let center_lonlat = (new OpenLayers.LonLat(Waze.map.center.lon, Waze.map.center.lat)).transform(projI,projE); let lat = Math.round(center_lonlat.lat * 1000000) / 1000000; let lon = Math.round(center_lonlat.lon * 1000000) / 1000000; //let lang = I18n.currentLocale().replace("en-US", "en"); window.open(`https://www.openstreetmap.org/#map=${(W.map.zoom + 12)}/${lat}/${lon}`); //window.open('https://www.google.com/maps/@' + lat + ',' + lon + ',' + ( W.map.zoom + 12) + 'z' + (lang != "" ? "?hl=" + lang : ""), 'Bing Maps'); }); } } function loadSettings() { var loadedSettings = $.parseJSON(localStorage.getItem("OOM_Settings")); var defaultSettings = { GMaps: true, Mapillary: true, Terraserver: true, Wikimapia: false, Bing: false, OSM: false, LangSetting: 1, CustLang: "" }; settings = loadedSettings ? loadedSettings : defaultSettings; for (var prop in defaultSettings) { if (!settings.hasOwnProperty(prop)) settings[prop] = defaultSettings[prop]; } } function saveSettings() { if (localStorage) { var localsettings = { GMaps: settings.GMaps, Mapillary: settings.Mapillary, Terraserver: settings.Terraserver, Wikimapia: settings.Wikimapia, Bing: settings.Bing, OSM: settings.OSM, LangSetting: settings.LangSetting, CustLang: settings.CustLang }; localStorage.setItem("OOM_Settings", JSON.stringify(localsettings)); } } function isChecked(checkboxId) { return $('#' + checkboxId).is(':checked'); } function setChecked(checkboxId, checked) { $('#' + checkboxId).prop('checked', checked); } function bootstrap(tries) { tries = tries || 1; if (window.W && window.W.map && window.W.model && $ && WazeWrap.Interface) { initInterface(); } else if (tries < 1000) { setTimeout(function () {bootstrap(tries++);}, 200); } } bootstrap(); })();