WME LiveMap Alerts Overlay

Overlay alerts from the Waze LiveMap

Versão de: 16/06/2020. Veja: a última versão.

// ==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.19
// @namespace           https://greasyforks.org/users/110192
// ==/UserScript==

var W;
var OL;
var I18n;
var LiveMapAlerts_Layer;

initializeLiveMapAlerts();

function checkLayerNum()
{
	var lmaoLayer = null;
	for(var i = 0; i < W.map.getLayers().length; i++)
	{
		if(W.map.getLayers()[i].uniqueName == '__livemap_alerts') lmaoLayer = i;
	}
	return lmaoLayer;
}

function getBounds()
{
	var alertBounds = W.map.getExtent();
	alertBounds.transform(new OL.Projection("EPSG:900913"),new OL.Projection("EPSG:4326"));
	return alertBounds;
}

function getRoutingServer(){
	var server = W.app.getAppRegionCode();
	var routingURL = 'https://www.waze.com';
	if (~document.URL.indexOf('https://beta.waze.com')) {
		routingURL = 'https://beta.waze.com';
	}
	switch(server){
		case 'usa':
			routingURL += '/rtserver/web/TGeoRSS';
			break;
		case 'row':
			routingURL += '/row-rtserver/web/TGeoRSS';
			break;
		case 'il':
			routingURL += '/il-rtserver/web/TGeoRSS';
			break;
		default:
			routingURL += '/rtserver/web/TGeoRSS';
	}
	return routingURL;
}

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

function getLiveMapAlerts(){
	if (!LiveMapAlerts_Layer.getVisibility()) {
		return;
	}
	var alertBounds = getBounds();
	var url = getRoutingServer();
	var data = {
		left: alertBounds.left,
		right: alertBounds.right,
		bottom: alertBounds.top,
		top: alertBounds.bottom,
		types: "alerts"
	};
	$.ajax({
		dataType: "json",
		url: url,
		data: data,
		success: function(json) {
			LiveMapAlerts_Layer.destroyFeatures();
			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;
					addImage(lat, long, type, subType, alertData[i]);
				}
			}
			catch(e) {
			}
		}
	});
}

function addImage(lat, long, type, subType, detail) {
	var coords = OL.Layer.SphericalMercator.forwardMercator(long, lat);
	var point = new OL.Geometry.Point(coords.lon,coords.lat);
	var alertPx = W.map.getPixelFromLonLat(new OL.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,iVBORw0KGgoAAAANSUhEUgAAACAAAAAmCAYAAAClI5npAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAD/4AAA/+AbLWlSoAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTczbp9jAAAJfklEQVRYR9VXa1RU1xXWUk1M1C5TX2mzUmMaXSuNicu4NICIDE9REDQmjYII+AKqsYJKMatGIdEsxUaiJiZqg4qiiVUMxPAuKIIIA8NTQRl5CAzMwLyZuTN3Tvd3Z0ZBJepqfrR7+S2u956zv32+s/c5e4b8v9lQwvBp06aN2bZt26t79ux5A4iNjZ2Md/hmG/OL2zAi+aNEItksk8lyjUZjj9ls5iw2wzO9U9C3bLFYHIOxmGOd+t+ZAzmb0tTUdIxI+pjNeJPRYlJ3cEbFbYNR0WQwaTo5nuKxfWY0Vi+VSr+xBfIrq6unt2eLiorW0Mp64ZRIeV1jVq8iO+ZOd6prbc+/XKqVaS5Vqh/mSnovuFTJz4lqlAVb7+iluUoEiDkGg0FRUFAQTr6esbp8Qps6deqohoaGJJ7nSWCe6Rqze+XnAm+q010lhjyR2HTFo9xc5FnOX/UqA/CMd4YCkViTOa9Smbm0vq8lX8ksFvpn4evr6/8xbty4kTb3j7XnGhsbvxRWzen53vztLVgpR85BxEq8yti1QUDfhGAue5RrsuZVasp2tVjMBh6+yOch+LZSDG7DSkpKYpBYvFHH92RtkOouuVaaaXU/S0zg6bsd1kA8yvV5ogpt8ZbbFpMBUlqKi4ujiePXVqqHbWhiYuIsk8nUZyHpFbmxzTqSE44eRQiATE+r7cryrZJdibgpK/pLQ2dOYI0mn9QStoa2hZ61pX+XYjs4jtMkJCTMAJeVcqA9397e/hPk0taekyO5hJU/ghgwkXN5tkdlU+lXsiPffMlv3RLNYqI3sn2Jey01V08pu3IWVZuveliVyBFVGKRp3fDd1taWQVwjrJT3bejBgwfdKOl4c5/KrPjeu44r8BA/SnaOgpLnzpd0Fsc11V47o1q1YinLTJjO8ndPF/4W7X2LRSxzY0W5qTpFjmclVEKCqrP9a3ijmirUzMXHxzuB00pttWfq6uqOIUKN5ES37tK8SmR3f2I46iO52wsjGtIvpHCRYcEsMtCdrV7gzJbOd2Jz5swR4OflxCqS3mTrwpezjtL4Zo4UwFxsRV9jqgwcVBVHiBOnptUmTpw4TqPR3KXUs8jPL7mJjO9Pbl21r6StJL751Ikj5u1LnFnFBkf2xTIn9nWQEytf78hCfJyZp5uzEMD+9TNZXKgTqyr+Tt2T415hV0FTuKIeuaBSqW6PGjXqtzb6IUOjoqJmQn1O2WrEAdM/8Qw0sfNyRMMP51O41UFBLGr+fBbh483c5869v2rRHHadgvhbyGxm+u51ZiZIvniTRa0NY7Lrn9yx54Im273SrOviKNFNNO91cCMAh6NHj34AafpaSjQ4bBAxyPG3O29x9fdnkk07/Rex8rBwtjdwMdu/eInwvM7bhwV5O7OtAc6sKMqRfUBb0fbPtxjTtTPLlbVsa8g7rL3mrBwKwpc+V1TBdVWowXXgwIF3iVs4poddvHhxA17qb/3Ui5PMnnwG2vPW0n13QwMCWGXYKubm4nJv1d6urqyC3m3yn8P47U6MT3qf3djkyKKXz2aW4g2sI8WZrQpewmSVSW2oGATQR3lgaMvpAVdaWtp64hbOhOHp6ekxQgCNGT36bLcKBIAJXbmLqn9MSzHGL1rE0pcHsY/8/AagMGQlW+PjyW4nhtINxDHTLm+2QOTM3vV1YutWr2SlBWe0ijwfoRLuBdCaqQBXRkYGDiXhxhx+8uTJKCEAaZ4KCmAwZGstP9QR5u/P9DFbGJ/wCeM3bLyPD//K+D17WcvaCBa1cC7r3OnLvl3hxOgGZMHBwayx/GyvPIv2nHzZtxMBGDuuCJdbcnLyOnALAcTFxQXipUFWo1chB6gEkXw3i4/KYxf6McuFi4zJZAMD2PUZQ0abdiawQJGIuRNOJB/h22jLFJWf3lH+e+G9XAJwRyAHTMpbenCtXLnS1x7AsBkzZrxN126f2aA2y8+51gi3HWWujI7QjVFRLCsklHVEx7DOdZED0L55K/v2vfdZdHQ0O3QwydJxdfPtvkJ3Yb8fPMTgU5vrW8VzOl6v16vHjx8/DdwIwIHwMjUQ5YhMWRjXjEMDTtT5HuLm8q9lSZ8n8ki8yMhI9vHH2wWEh4czF0rK0ynHzK0ln7Z05wVUI2n7k94D+TIUeoi15Tuk4KAG5xpxvmTjFkrhhVOnTiXgo6FTrFVnuEpQtwhCQ4fSXSLY//k+S13RMYU0w6+2Kd2vVnwlVXP4q4OWrtK4JpyQ/eV+EMJ9gBJUVGnAcfz48R3EiR5SKEMcBs9RE+Kk1WqFBFHlb2yyq4DoQaDM96nU0f2Ad7jpNAWeYrxDrjyK1A6MF1ZfuvkWfCuVyq4JEybMAifI7Ya9eCk1NXU/BplUbQZlulcNRxMf3MunAcite7+gyqxtN1BLwE6fPr2PuH5PGNAXQIVRo0ePntXc3FyLIAxtRSr1JfcqOPg5eQeDnVxPKnGyUhV8Up5VjRgxYia4bJwDDCq86OnpuVStVsuFIFovUxBeVZDwse2YHTQGY6GeLs9XwsmuKeGLpJe7u7svIY6JNq6HTMgFwuSQkJA1FISQD5zipl6dE3wDTYVQnvZA+gdj+7/QD9IYHDjay6H19ponXz3Lli1bTb5fIaAZeWj1dkNWQp4p/v7+oR0dHS1wwJuNFn3juW5l9nv1aDaRoFAFzSeAZ3TEOgpSk//nOoP0QpfF9juBfNzx8fEJgU+b78f+TkBt/obwGmXrgtzc3IvUy3FwZuHNFmOXRKurPyHTiHe3aEs/atJeJ1R81tLXkNLJyau1aONhdLAZMzMzz48ZM8aHfOEHymib7ycyDES0fyDMEolE4fn5+T+SlMJ+DmbofKnZ6M3Ly8twc3MLw1zCywT8JnhicrtBqmcJ4wiQ751JkyYFQ1Ib3wBDP3n48OHkkSNHBtDY2YTXbHPh47GyD2ZIFtTr8wQ4m+7o6PghZbSQoHZDfZ89exbd7kKCnRhzMHfQhHsagxNICKd/oiqJxeVl42dlZWVFDg4O2GuUGH4HYuwvRgz5ADgFUKpvUGu9Gz02HS43xo4du4DeTSCgvjHGPgfznzoQTIR0qFckIi6NsYTxBKzwRQKyOmDHjh0npkyZsomekWw4XvEdgWALXiCgmhAw7v0nUgUDQI5JcPA7AioBB8hkwqs2vE3AfgcRlhLcCdh7+3eMnUTAlYtgsBAEgcU9kdmlR9SQFZORzVAFwSEXECDUgDIgwDt8wzjkAeZhMfat+F+0IUP+Ay4NROkrVAh0AAAAAElFTkSuQmCC';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,iVBORw0KGgoAAAANSUhEUgAAACAAAAAmCAYAAAClI5npAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAD/4AAA/+AbLWlSoAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTczbp9jAAAIo0lEQVRYR9VXe1BU1xnXUk1M1I6pqGkzqTUVOzFYdiUojp2OWmecPBxtJQpiQEENIfYRHzXSVA20mlgfRRBfxGARFGMJCyugAkFFwLAgj/BmeYgYyALLcu8+7u69p9/v7q4VWBSn+aP9Zn8zd87j9/vOd77znbOj/t9sNGGsp6fnpIiIiJcOHDjwCrBz584ZaEOfY8x3bmNI5Gfl5eXbOzs7cywWS4/NZhMkh+Gb2rqp72ppaek2jMUc+9T/ztyIzEOr1X5KIibmMIm0bVyXYNXfNQE27ltqECRHN6Oxxubm5lMOR75np3pye7qgoGATrawXpKLVIlnaCnr5Wx9rDarACj4j4A6vDrhjvLy2DN+G9HUVfOEnWsvdW70Yizlms7k7Pz8/hLieslOO0GbNmjWhvr4+WhRFCrDILG23erns8GpTZmCZcC2o1JobpLHlrdeIX64vAfCNNvQZaQx3dUu1pb2ol0kS/SSxpqbmsLu7+3gH/WPtmYaGhjh51YJJ5G9Htxoz15ZZc+yiLH99yaMgO0Nj4YipNK5VsllEcBHnMXDbJYa3MUVFRduQWKJgFPmbUU3m7MBSG63OldijgDnm7LdL+cL9TXACnIWFhVtJ4/t2qaE2+uDBgz5Wq9WEsPNFf2+WxfOeXNwJzDVfISduH2rGdgiC0B8VFaWEll1yoD3b0dGRhXCZG7N1Jgr7o1ZuqzzakKNOMn52Jl6qKUrVS8U7KlyOIw5sh0V79Vtwt7e3q0lrnF3yPzY6NjZ2ESWdKJr7bZx6QxWSyhUhIFYeqYv8aI8UsWk+u7jPhwX5/YrlqFPMUkF4mavx4OKzNlaKFo5OqE2IjIxcAE27tN2eqq6u/hQemmq+6DJlBZYhu12RSTfDSq+qL1p2hPiyvkwFM2QrWOslJVuz6jXWU5Pe6WoOuJAP5jrqJ6NTcZo0UTXtNm3aNPf+/v572HsuM7wGWeyKCOCqz98NWL2SNV2YK4sbrihlXKBI7N/3V0nS7K5yNQ+c3LX3a5ELfX19TRMmTPihQ37U6PDwcG8Kvs1q6LBwKv/y4RJPKt5aHn8qToz90zxmyFSyxK2zWaivB9NnKVkPRSPY75es9quMPldzwcmr196x8TqBEt26cOHCl6ENB9zi4+P9ERqho8xgoso2XPjvlat0/isXs65LtPLLCpa8fTYL8vawRyJLwQqOe7N33w1jUs2pxsFzwYlkFL6p7IdWTEzMKtKWy/QYlUr1OzRaWvJ7UO2YCwfEsn01u3d/KKk+epXpyYG+dAW7EuXJ/vjrWRQNOKSU2yJC57PM1HNm5MqA+XCAcsvSdrMHWmlpaVtIW64JYzMyMrah0azNdemAdD1Eo7mRxm3+zQLWE+/F9MkKpv+XgmmOzmFRq34uC+vT7G2Np5XM328F4+ou3XuYAw6YqK5Ymr/shpZarUZRkm/MsYmJieFopJqvx/kfvAVi9fHGTRtD2e0PaK9jvFjvGcI5BetM9GKaw3OY/nMST1Gw3iQC9Z0M92En46Jt0q0tD46lcwss7cV6aCUkJLwDbdmBXbt2rUSjVVfPGzP87wx2oPmri7rNb/gy3V+8WPd+L9YTTTjpxRJCXmZrPGeyngS7U2hDX1ukggX6r2ZS7ekHuYA7ArentbfZCK3g4ODXnA6MUSqVc+naNaEIGVLXVA4uQg3FF7vD3iQHPvSSndBFkiMHvFj7x79gZX+eY3foiL0NfS0fKJj/W6uYVH9G6+QAJ6cOrsQdYzQaDVOmTPGENhxwI7xIDwgNPONuftIqUP1+2AHx62MNO3ZsZ7v95rHUzd5MHebN0oFwwnsO4Psdb3Yu5FUW+uZCdunCWeHhLZDvhKJDLdCgB04xab7g0JaPwnNJSUlR6BQ6qzhetbp88D1grT7VlEu1/3jsEVtM9GFxMI4dPWyLizli++x0rLW2OE0vafY8KEjgQviFrmoOGmfPnt1LmnhDyscQxeAZeoQs4DhOfv1weXu0AmXs4Fxg+RtKpBuhGunGxuFBJ+bhOeBARPnrUU3g1uv1XVOnTvWBJsSdhr144fz58//AIGvfPaqIgVXCNdqKIU6MHBBHCeZp762G+xZ6ErDk5ORDpPVjwoB3AaIwYeLEiT6tra1fwwnL3dsGXrW2AgRDI/F4PBDPWFchdJQawEl5VjFu3DhvaDk0Bxii8PzSpUv9DAaDzu5EcR+fFlCJEI7kOeYExsphz3i7UujQ9IGLQq9bsmTJb0ljmkNriMm5QJgRFBS0iZyQ88Ha3Wjsv/xevYnqA7ZEdsRVRKhNFqYxRkq4/qw/1Ft7tPJTnrh6AgICNhL3Twl4jAxZvdOQlQiPx/Lly9ffv3+/DQR485trM3T96Zvr+C/eKjfThYUkxSrtCCxFBcXp4dRhteY6tc75P4E4WpYtWxYETgf3Y/8n4Gz+gDCTsvX1nJwcFb3lBNkR0SYJ31TxpooLXcbC6HYu/2+t/PV9Lcaio+2mys+7hM5qngZhKKPCZsnOzk6dNGnSMuLCH5SJDu4RGQbC258QfBYvXhySl5d3mUIp1/HhDC9femz05ubmqhctWrQBcwkvEvCfYMTiTkOonia4ExC++dOnT1+HkDr0BhiekydOnEgYP378Cho7jzDTMRccjw37cIZkwXl9lgAyL19f399TRssJ6jSc75SUFLx23yA4hTEHc4dNuCcxkCCEIJ1Np2QnLi+HPispKSlwc3PDXuOI4X8gxn5nwggfAFIAR/UVelrvxxubikvt5MmTX6e2qQScb4xxzsH8J3YEExE6nFckIi6NyYQpBKzweQKyesXevXv/6eHh8T59I9lQXtEPR7AFzxFwmuAw7v0RRQUDII5JIPgRAScBBWQG4SUH5hKw34EEP8ISAvbe2Y+x0wm4cuEMFgInsLgRmTP08BphxWRkM6IC55ALcBDRQGQggDb0YRzyAPOwGOdW/C/aqFH/BphefF67sj++AAAAAElFTkSuQmCC';
	}
	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);
	var alertTransparency;
	if(type == 'ROAD_CLOSED'){
		alertTransparency = 1;
	}
	else if(alertAgeInMinutes < 15){
		alertTransparency = 1;
	}
	else if(alertAgeInMinutes >= 15 && alertAgeInMinutes < 30){
		alertTransparency = 0.8;
	}
	else if(alertAgeInMinutes >= 30 && alertAgeInMinutes < 45){
		alertTransparency = 0.5;
	}
	else if(alertAgeInMinutes >= 45){
		alertTransparency = 0.25;
	}
	else{
		alertTransparency = 1; //"unknown" age
	}
	var style = {
		externalGraphic: icon,
		graphicWidth: 32,
		graphicHeight: 38,
		graphicYOffset: getFeatureYOffset(),
		fillOpacity: alertTransparency,
		title: 'LiveMap',
		cursor: 'help'
	};
	var imageFeature = new OL.Feature.Vector(point, attributes, style);
	LiveMapAlerts_Layer.addFeatures([imageFeature]);
}

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

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

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

function initializeLiveMapAlerts(e)
{
	W = unsafeWindow.W;
	OL = unsafeWindow.OpenLayers;
	I18n = unsafeWindow.I18n;
	if (e && e.user === null) {
		return;
	}
	if (typeof W === "undefined" || typeof W.loginManager === "undefined" || document.querySelector('.list-unstyled.togglers .group') === null) {
		setTimeout(initializeLiveMapAlerts, 100);
		return;
	}
	if (!W.loginManager.user) {
		W.loginManager.events.register("login", null, initializeLiveMapAlerts);
		W.loginManager.events.register("loginStatus", null, initializeLiveMapAlerts);
		if (!W.loginManager.user) {
			return;
		}
	}
	function showAlertPopup(f){
		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){
		}
		var attributes = f.attributes;
		var alertType = ((attributes.type == "WEATHERHAZARD") ? "HAZARD" : attributes.type);
		var alertSubType = ((!attributes.subtype) ? "" : attributes.subtype);
		var alertDescription = ((!attributes.description) ? "" : attributes.description);
		var alertStreet = ((!attributes.street) ? "" : attributes.street);
		var alertCity = ((!attributes.city) ? "" : attributes.city);
		var alertNear = ((!attributes.near) ? "" : attributes.near);
		var alertReportBy = ((!attributes.reportby) ? "" : attributes.reportby);
		var alertPubMillis = attributes.pubMillis;
		var alertDateTime = new Date(parseInt(alertPubMillis));
		var alertAge = getAlertAge(attributes.pubMillis);
		var displayAge;
		if(alertAge < 60){
			displayAge = alertAge + " min";
		}
		else if(alertAge >= 60 && alertAge < 1440){
			displayAge = Math.floor(alertAge/60) + " hr";
		}
		else if(alertAge >= 1440){
			displayAge = Math.floor(alertAge/1440) + " day";
		}
		else{
			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';
	}

	function registerKeyShortcut(actionName, callback, keyName) {
		I18n.translations[I18n.locale].keyboard_shortcuts.groups.default.members[keyName] = actionName;
		W.accelerators.addAction(keyName, {group: 'default'});
		W.accelerators.events.register(keyName, null, callback);
		W.accelerators._registerShortcuts({[""]: keyName});
	}

	var lmaoVisibility = true;
	LiveMapAlerts_Layer = new OL.Layer.Vector("LiveMap Alerts",{
		rendererOptions: { zIndexing: true },
		uniqueName: '__livemap_alerts'
	});
	if (localStorage.WMELiveMapAlerts) {
		var options = JSON.parse(localStorage.getItem("WMELiveMapAlerts"));
		lmaoVisibility = options[0];
	}
	window.addEventListener("beforeunload", function saveLMAOOptions() {
		if (localStorage) {
			var options = [];
			lmaoVisibility = document.getElementById("layer-switcher-item_livemap_alerts").checked;
			options[0] = lmaoVisibility;
			localStorage.setItem("WMELiveMapAlerts", JSON.stringify(options));
		}
	}, false);
	var roadGroupSelector = document.getElementById('layer-switcher-group_road');
	if (roadGroupSelector !== null) {
		var roadGroup = roadGroupSelector.parentNode.parentNode.getElementsByTagName("UL")[0];
		var toggler = document.createElement('li');
		var checkbox = document.createElement("wz-checkbox");
		checkbox.id = 'layer-switcher-item_livemap_alerts';
		checkbox.className = "hydrated";
		checkbox.disabled = !roadGroupSelector.checked;
		checkbox.checked = lmaoVisibility;
		lmaoVisibility = checkbox.checked & roadGroupSelector.checked;
		checkbox.appendChild(document.createTextNode("LiveMap Alerts"));
		toggler.appendChild(checkbox);
		roadGroup.appendChild(toggler);
		checkbox.addEventListener('click', function(e) {
			lmaoVisibility = e.target.checked;
			LiveMapAlerts_Layer.setVisibility(lmaoVisibility);
			getLiveMapAlerts();
		});
		roadGroupSelector.addEventListener('click', function(e) {
			lmaoVisibility = e.target.checked & checkbox.checked;
			LiveMapAlerts_Layer.setVisibility(lmaoVisibility);
			getLiveMapAlerts();
			checkbox.disabled = !e.target.checked;
		});
		registerKeyShortcut("LiveMap Alerts Overlay", function(e) {
			if (!roadGroupSelector.checked.disabled) {
				checkbox.click();
			}
		}, "LiveMapAlertsOverlay");
	}
	W.map.addControl(new OL.Control.DrawFeature(LiveMapAlerts_Layer, OL.Handler.Path));
	W.map.addLayer(LiveMapAlerts_Layer);
	LiveMapAlerts_Layer.setVisibility(lmaoVisibility);
	getLiveMapAlerts();
	var divPopupCheck = document.getElementById('divLMAO');
	if (divPopupCheck === null){
		var 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);
	}
	W.map.olMap.events.register("zoomend", null, getLiveMapAlerts);
	W.map.olMap.events.register("moveend", null, getLiveMapAlerts);
	W.map.olMap.events.register("mousemove", W.map, function(e) {
		hideAlertPopup();
		var position = this.olMap.events.getMousePosition(e)
		var lmaoLayer = checkLayerNum();
		if(W.map.getLayers()[lmaoLayer].features.length > 0){
			var alertFeatures = W.map.getLayers()[lmaoLayer];
			for(var j = 0; j < W.map.getLayers()[lmaoLayer].features.length; j++){
				var alertX = alertFeatures.features[j].attributes.pixel.x;
				var alertY = alertFeatures.features[j].attributes.pixel.y + getFeatureYOffset();
				if(LiveMapAlerts_Layer.getVisibility() === true && position.x > alertX - 10 && position.x < alertX + 10 && position.y > alertY - 10 && position.y < alertY + 20){
					showAlertPopup(alertFeatures.features[j]);
				}
			}
		}
	});
}
长期地址
遇到问题?请前往 GitHub 提 Issues。