WME LiveMap Alerts Overlay

Overlay alerts from the Waze LiveMap

Versión del día 19/09/2017. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name                WME LiveMap Alerts Overlay
// @author		        davielde, MajkiiTelini
// @description         Overlay alerts from the Waze LiveMap
// @include             /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor.*$/
// @copyright           Many thanks to Timbones and Twister-UK, whose code (WMECH and URO+) provided a large foundation for this work
// @version             0.5.7
// @grant               none
// @namespace           https://greatest.deepsurf.us/users/110192
// ==/UserScript==

//------------------------------------------------------------------------------------------------
function bootstrapLiveMapAlerts()
{
    setTimeout(initializeLiveMapAlerts, 999);
}

//--------------------------------------------------------------------------------------------------------
function checkLayerNum()
{
    var lmaoLayer = null;
    for(i=0; i<Waze.map.layers.length; i++)
      {
         if(Waze.map.layers[i].uniqueName == '__livemap_alerts') lmaoLayer = i;
      }
    //console.log('WME LMAO: layer number = ' + lmaoLayer);
    return lmaoLayer;
}

//--------------------------------------------------------------------------------------------------------
function getBounds()
{
   	var alertBounds = Waze.map.getExtent();
    alertBounds.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));
    //console.log('WME LMAO: Current bounds = Left ' + alertBounds.left + ', Right ' + alertBounds.right + ', Bottom ' + alertBounds.bottom + ', Top ' + alertBounds.top);//verify transform
    return alertBounds;
}

//--------------------------------------------------------------------------------------------------------
function getRoutingServer(){
    var server = Waze.location.code;
    //console.log('WME LMAO: server = ' + server);
    switch(server){
        case 'usa':
           var routingURL = '//www.waze.com/rtserver/web/TGeoRSS';
             break;
        case 'row':
           var routingURL = '//www.waze.com/row-rtserver/web/TGeoRSS';
            break;
        case 'il':
           var routingURL = '//www.waze.com/il-rtserver/web/TGeoRSS';
            break;
        default:
            var routingURL = '//www.waze.com/rtserver/web/TGeoRSS';
    };
    return routingURL;
}

//--------------------------------------------------------------------------------------------------------
function getFeatureYOffset(){
    var yOffset = -30;
    return yOffset;
}

//--------------------------------------------------------------------------------------------------------
function getLiveMapAlerts(){
    if (!LiveMapAlerts_Layer.getVisibility()) {
        return;
    }
    LiveMapAlerts_Layer.destroyFeatures();
    var alertBounds = getBounds();
    var url = getRoutingServer();
	var data = {
      left: alertBounds.left,
      right: alertBounds.right,
      bottom: alertBounds.top,
      top: alertBounds.bottom
    };
    $.ajax({
        dataType: "json",
        url: url,
        data: data,
        success: function(json) {
            var alertData = json.alerts;
            try {
                for(var i = 0; i < alertData.length; i++) {
                    var lat = alertData[i].location.y;
                    var long = alertData[i].location.x;
                    var type = alertData[i].type;
					var subType = alertData[i].subtype;
                    var title = alertData[i].reportDescription;
                    //console.log("WME LMAO: " + alertData[i].type, alertData[i].location.x, alertData[i].location.y);
                    addImage(lat, long, type, subType, alertData[i]);
                }
            }
            catch(e) {
                //console.log('WME LMAO: No alerts in view');
            }
        }
    });
}

//--------------------------------------------------------------------------------------------------------
function addImage(lat, long, type, subType, detail) {
	var coords = OpenLayers.Layer.SphericalMercator.forwardMercator(long, lat);
	var point = new OpenLayers.Geometry.Point(coords.lon,coords.lat);
	var alertPx = Waze.map.getPixelFromLonLat(new OpenLayers.LonLat(coords.lon,coords.lat));
	var imgRoot = '/assets';
	var icon;
	switch(type){
		case 'ROAD_CLOSED':
			icon = 'data:image/png;base64,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';break;
		case 'ACCIDENT':
			icon = 'data:image/png;base64,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';break;
		case 'JAM':
			switch(subType){
				case 'JAM_HEAVY_TRAFFIC':
					icon = 'data:image/png;base64,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';break;
				case 'JAM_MODERATE_TRAFFIC':
					icon = 'data:image/png;base64,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';break;
				default:
					icon = 'data:image/png;base64,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';
			}
			break;
		case 'POLICE':
			icon = 'data:image/png;base64,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';break;
		case 'HAZARD':
			switch(subType){
				case 'HAZARD_ON_ROAD_CONSTRUCTION':
					icon = 'data:image/png;base64,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';break;
				default:
					icon = 'data:image/png;base64,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';
			}
			break;
		case 'CHIT_CHAT':
			icon = 'data:image/png;base64,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';break;
		default:
			icon = 'data:image/png;base64,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';
	}
	var attributes = {
		type: detail.type,
		subtype: detail.subtype,
		description: detail.reportDescription,
		street: detail.street,
		city: detail.city,
		near: detail.nearBy,
		reportby: detail.reportBy,
		pubMillis: detail.pubMillis,
		pixel: alertPx
	};
	var alertAgeInMinutes = getAlertAge(detail.pubMillis);
	if(type == 'ROAD_CLOSED'){
		var alertTransparency = 1;
	}
	else if(alertAgeInMinutes < 15){
		var alertTransparency = 1;
	}
	else if(alertAgeInMinutes >= 15 && alertAgeInMinutes < 30){
		var alertTransparency = .8;
	}
	else if(alertAgeInMinutes >= 30 && alertAgeInMinutes < 45){
		var alertTransparency = .5;
	}
	else if(alertAgeInMinutes >= 45){
		var alertTransparency = .25;
	}
	else{
		var alertTransparency = 1; //"unknown" age
	}
	var style = {
		externalGraphic: icon,
		graphicWidth: 32,
		graphicHeight: 38,
		graphicYOffset: getFeatureYOffset(),
		fillOpacity: alertTransparency,
		title: 'LiveMap',
		cursor: 'help'
	};
	var imageFeature = new OpenLayers.Feature.Vector(point, attributes, style);
	LiveMapAlerts_Layer.addFeatures([imageFeature]);
	//console.log('WME LMAO: Added alert at ' + lat + ',' + long);
}

//--------------------------------------------------------------------------------------------------------
function getAlertAge(msValue){
    var d = new Date();
    try{
    	var ageInMinutes = Math.floor((d.getTime() - msValue) / 60000);
    } //milliseconds to minutes
    catch(e){
    	var ageInMinutes = "unknown"
    }
    return ageInMinutes;
}

//--------------------------------------------------------------------------------------------------------
function getFriendlyType(rawType){
    switch(rawType){
      case 'JAM':
          var friendlyType = 'Jam'; break;
      case 'POLICE': //Firefox
          var friendlyType = 'Police'; break;
      case 'POLICEMAN': //Chrome
          var friendlyType = 'Police'; break;
      case 'CHIT_CHAT':
          var friendlyType = 'Chit Chat'; break;
      case 'TRAFFIC_JAM':
          var friendlyType = 'Traffic Jam'; break;
      case 'HAZARD':
          var friendlyType = 'Hazard'; break;
      case 'WEATHERHAZARD': //Chrome JSON has all hazards as weather hazard
          var friendlyType = 'Hazard'; break;
      case 'ACCIDENT':
          var friendlyType = 'Accident'; break;
      case 'CONSTRUCTION':
          var friendlyType = 'Construction'; break;
      case 'ROAD_CLOSED':
          var friendlyType = 'Road Closed'; break;
      case 'OTHER':
          var friendlyType = 'Chit Chat'; break;
      default:
          var friendlyType = 'Unknown';
      };
    return friendlyType;
}

//--------------------------------------------------------------------------------------------------------
function getFriendlySubType(rawSubType){
    switch(rawSubType){
      case 'POLICE_VISIBLE':
          var friendlySubType = 'Visible Police Trap'; break;
      case 'POLICE_HIDING':
          var friendlySubType = 'Hidden Police Trap'; break;
      case 'ROAD_CLOSED_HAZARD':
          var friendlySubType = 'Hazard Closure'; break;
      case 'ROAD_CLOSED_CONSTRUCTION':
          var friendlySubType = 'Construction Closure'; break;
      case 'ROAD_CLOSED_EVENT':
          var friendlySubType = 'Closure'; break;
      case 'ACCIDENT_MINOR':
          var friendlySubType = 'Minor Accident'; break;
      case 'ACCIDENT_MAJOR':
          var friendlySubType = 'Major Accident'; break;
      case 'JAM_MODERATE_TRAFFIC':
          var friendlySubType = 'Moderate Traffic'; break;
      case 'JAM_HEAVY_TRAFFIC':
          var friendlySubType = 'Heavy Traffic'; break;
      case 'JAM_STAND_STILL_TRAFFIC':
          var friendlySubType = 'Stand Still Traffic'; break;
      case 'JAM_LIGHT_TRAFFIC':
          var friendlySubType = 'Light Traffic'; break;
      case 'HAZARD_ON_ROAD':
          var friendlySubType = 'Hazard on Road'; break;
      case 'HAZARD_ON_SHOULDER':
          var friendlySubType = 'Hazard on Shoulder'; break;
      case 'HAZARD_WEATHER':
          var friendlySubType = 'Weather Hazard'; break;
      case 'HAZARD_ON_ROAD_OBJECT':
          var friendlySubType = 'Object on Road'; break;
      case 'HAZARD_ON_ROAD_POT_HOLE':
          var friendlySubType = 'Pothole'; break;
      case 'HAZARD_ON_ROAD_ROAD_KILL':
          var friendlySubType = 'Road Kill'; break;
      case 'HAZARD_ON_ROAD_CAR_STOPPED':
          var friendlySubType = 'Car Stopped on Road'; break;
      case 'HAZARD_ON_SHOULDER_CAR_STOPPED':
          var friendlySubType = 'Car Stopped on Shoulder'; break;
      case 'HAZARD_ON_SHOULDER_ANIMALS':
          var friendlySubType = 'Animals on Shoulder'; break;
      case 'HAZARD_ON_SHOULDER_MISSING_SIGN':
          var friendlySubType = 'Missing Sign'; break;
      case 'HAZARD_WEATHER_FOG':
          var friendlySubType = 'Fog'; break;
      case 'HAZARD_WEATHER_HAIL':
          var friendlySubType = 'Hail'; break;
      case 'HAZARD_WEATHER_HEAVY_RAIN':
          var friendlySubType = 'Heavy Rain'; break;
      case 'HAZARD_WEATHER_HEAVY_SNOW':
          var friendlySubType = 'Heavy Snow'; break;
      case 'HAZARD_WEATHER_FLOOD':
          var friendlySubType = 'Flood'; break;
      case 'HAZARD_WEATHER_MONSOON':
          var friendlySubType = 'Monsoon'; break;
      case 'HAZARD_WEATHER_TORNADO':
          var friendlySubType = 'Tornado'; break;
      case 'HAZARD_WEATHER_HEAT_WAVE':
          var friendlySubType = 'Heat Wave'; break;
      case 'HAZARD_WEATHER_HURRICANE':
          var friendlySubType = 'Hurricane'; break;
      case 'HAZARD_WEATHER_FREEZING_RAIN':
          var friendlySubType = 'Freezing Rain'; break;
      case 'HAZARD_ON_ROAD_LANE_CLOSED':
          var friendlySubType = 'Closed Lane'; break;
      case 'HAZARD_ON_ROAD_OIL':
          var friendlySubType = 'Fresh Oil Spill'; break;
      case 'HAZARD_ON_ROAD_ICE':
          var friendlySubType = 'Recently Formed Ice'; break;
      case 'HAZARD_ON_ROAD_CONSTRUCTION':
          var friendlySubType = 'Construction'; break;
      default:
          var friendlySubType = '';
      };
    return friendlySubType;
}

//--------------------------------------------------------------------------------------------------------
function initializeLiveMapAlerts()
{
    //console.log("WME LMAO: Initializing");
    var lmaoVisibility = true;
    LiveMapAlerts_Layer = new OpenLayers.Layer.Vector("LiveMap Alerts",{
            rendererOptions: { zIndexing: true },
     		uniqueName: '__livemap_alerts'
        }
    );
    //I18n.translations.en.layers.name["__livemap_alerts"] = "LiveMap Alerts";
    // restore saved settings
    if (localStorage.WMELiveMapAlerts) {
        console.log("WME LMAO: loading options");
        var options = JSON.parse(localStorage.getItem("WMELiveMapAlerts"));
        lmaoVisibility = options[0];
    }
    // overload the WME exit function
    saveLMAOOptions = function() {
        if (localStorage) {
            console.log("WME LMAO: saving options");
            var options = [];
            lmaoVisibility = LiveMapAlerts_Layer.visibility;
            options[0] = lmaoVisibility;
            localStorage.setItem("WMELiveMapAlerts", JSON.stringify(options));
        }
    }
    window.addEventListener("beforeunload", saveLMAOOptions, false);
    function showAlertPopup(f){
        //shift popup if UR or MP panel is visible
        try{
            var urPanel = document.getElementById('update-request-panel');
        	var mpPanel = document.getElementById('problem-edit-panel');
            var conversationPanel = urPanel.children[5];
            if (urPanel.className == 'top-panel panel-shown collapsed' && conversationPanel.style.display == 'block'){
                divLMAO.style.left = '635px';
            }
            else if (urPanel.className == 'top-panel panel-shown' && conversationPanel.style.display == 'block'){
                divLMAO.style.top = '325px';
                divLMAO.style.left = '635px';
            }
            else if (urPanel.className == 'top-panel panel-shown' || mpPanel.className == 'top-panel panel-shown'){
                divLMAO.style.top = '325px';
            }
            else{
                divLMAO.style.top = '175px';
                divLMAO.style.left = '375px';
            }
        }
        catch(e){
            //console.log('WME LMAO: Problem getting detail for UR or MP panel');
        }
        var attributes = f.attributes;
        var alertType = ((attributes.type == "WEATHERHAZARD") ? "HAZARD" : attributes.type);
        var alertSubType = ((attributes.subtype == null) ? "" : attributes.subtype);
        var alertDescription = ((attributes.description == null) ? "" : attributes.description);
        var alertStreet = ((attributes.street == null) ? "" : attributes.street);
        var alertCity = ((attributes.city == null) ? "" : attributes.city);
        var alertNear = ((attributes.near == null) ? "" : attributes.near);
        var alertReportBy = ((attributes.reportby == null) ? "" : attributes.reportby);
        var alertPubMillis = attributes.pubMillis;
        var alertDateTime = new Date(parseInt(alertPubMillis));
        var alertAge = getAlertAge(attributes.pubMillis);
        if(alertAge < 60){
        	var displayAge = alertAge + " min";
        }
        else if(alertAge >= 60 && alertAge < 1440){
        	var displayAge = Math.floor(alertAge/60) + " hr";
        }
        else if(alertAge >= 1440){
        	var displayAge = Math.floor(alertAge/1440) + " day";
        }
        else{
            var displayAge = " unknown";
        }
        var reportDetail = "<b>LiveMap Alert Details</b>"
        	+ "<br>TYPE: " + getFriendlyType(alertType)
        	+ "<br>SUBTYPE: " + getFriendlySubType(alertSubType)
        	+ "<br>DESCRIPTION: " + alertDescription
        	+ "<br>STREET: " + alertStreet
        	+ "<br>CITY: " + alertCity
        	+ "<br>NEAR: " + alertNear
        	+ "<br>REPORT BY: " + alertReportBy
        	+ "<br>DATE: " + alertDateTime.toDateString()
        	+ "<br>TIME (user local): " + alertDateTime.toLocaleTimeString()
        	+ "<br>AGE: " + displayAge
        ;
        document.getElementById("divLMAO").innerHTML = reportDetail;
        divLMAO.style.visibility = 'visible';
    };
    function hideAlertPopup(){
        divLMAO.style.visibility = 'hidden';
        divLMAO.style.top = '175px';
        divLMAO.style.left = '375px';
    };
    LiveMapAlerts_Layer.setZIndex(9999);
    Waze.map.addLayer(LiveMapAlerts_Layer);
    var roadGroupSelector = document.getElementById('layer-switcher-group_road');
    if (roadGroupSelector !== null) {
        var roadGroup = roadGroupSelector.parentNode.parentNode.querySelector('.children');
        var toggler = document.createElement('li');
        var togglerContainer = document.createElement('div');
        var checkbox = document.createElement('input');
        var label = document.createElement('label');
        var labelText = document.createElement('span');
        togglerContainer.className = 'controls-container toggler';
        checkbox.type = 'checkbox';
        checkbox.id = 'layer-switcher-item_livemap_alerts';
        checkbox.className = 'toggle';
        checkbox.disabled = !roadGroupSelector.checked;
        checkbox.checked = lmaoVisibility;
        togglerContainer.appendChild(checkbox);
        label.htmlFor = checkbox.id;
        labelText.className = 'label-text';
        labelText.appendChild(document.createTextNode("LiveMap Alerts"));
        label.appendChild(labelText);
        togglerContainer.appendChild(label);
        toggler.appendChild(togglerContainer);
        roadGroup.appendChild(toggler);
        checkbox.addEventListener('click', function(e) {
            LiveMapAlerts_Layer.setVisibility(e.target.checked);
        });
        roadGroupSelector.addEventListener('click', function(e) {
            LiveMapAlerts_Layer.setVisibility(e.target.checked & checkbox.checked);
            checkbox.disabled = !e.target.checked;
        });
    }
    Waze.map.addControl(new OpenLayers.Control.DrawFeature(LiveMapAlerts_Layer, OpenLayers.Handler.Path));
    LiveMapAlerts_Layer.setVisibility(lmaoVisibility);
    var divPopupCheck = document.getElementById('divLMAO');
    if (divPopupCheck == null){
        divLMAO = document.createElement('div');
        divLMAO.id = "divLMAO";
        divLMAO.style.position = 'absolute';
        divLMAO.style.visibility = 'hidden';
        divLMAO.style.top = '175px';
        divLMAO.style.left = '375px';
        divLMAO.style.zIndex = 1000;
        divLMAO.style.backgroundColor = 'aliceblue';
        divLMAO.style.borderWidth = '3px';
        divLMAO.style.borderStyle = 'ridge';
        divLMAO.style.borderRadius = '10px';
        divLMAO.style.boxShadow = '5px 5px 10px Silver';
        divLMAO.style.padding = '4px';
        document.body.appendChild(divLMAO);
        //console.log('WME LMAO: Creating popup divLMAO');
    }
    //clear existing LMAO features
    LiveMapAlerts_Layer.destroyFeatures();
    var lmaoLayer = checkLayerNum();
    Waze.map.events.register("mousemove", Waze.map, function(e) {
        hideAlertPopup();
        var position = this.events.getMousePosition(e);
        //console.log('WME LMAO: coords xy = ' + position.x + ' ' + position.y);
        var lmaoLayer = checkLayerNum();
        if(Waze.map.layers[lmaoLayer].features.length > 0){
            //var alertCount = Waze.map.layers[lmaoLayer].features.length;
            //console.log('WME LMAO: Current LiveMap alert count = ' + alertCount);
            var alertFeatures = Waze.map.layers[lmaoLayer];
            for(j=0; j<Waze.map.layers[lmaoLayer].features.length; j++){
                var lmaoLayerVisibility = LiveMapAlerts_Layer.getVisibility();
                var alertX = alertFeatures.features[j].attributes.pixel.x;
                var alertY = alertFeatures.features[j].attributes.pixel.y + getFeatureYOffset();
                if(lmaoLayerVisibility == true && position.x > alertX - 10 && position.x < alertX + 10 && position.y > alertY - 10 && position.y < alertY + 20){
                	//console.log('WME LMAO: hover over alert');
                    showAlertPopup(alertFeatures.features[j]);
                }
            }
        }
    });
    //refresh if user moves map
    Waze.map.events.register("moveend", Waze.map, getLiveMapAlerts);
    window.setTimeout(getLiveMapAlerts(), 500);
}

//--------------------------------------------------------------------------------------------------------------
bootstrapLiveMapAlerts();