KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/gwsolutions/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/gwsolutions/js/citysurvey.js
var gmarkers = [];
var bounds = new google.maps.LatLngBounds();
var infowindow = "";
var map;
var borderColor = "Black";
var captionColor = "White";
var titleName = "Street Name";
var isiPhone = (navigator.userAgent.toLowerCase().indexOf("iphone") > -1);
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1;
var ACTUAL_PERCENTAGES = true;
var mapCenter = new google.maps.LatLng(53.347541, -3.829126);
var mobileCenter = new google.maps.LatLng(53.347541, -3.829126);
var lastValidCenter = mapCenter;
var initialZoom = 7;


var bubbleOffsetHeight = 0;


function addPin(data) {
	
	var newLat = data.latitude;
	var newLong = data.longitude;
	var text = '';
	var title = data.city;  //+ ': ' + newLat + ',' + newLong;
	var myLatlng = new google.maps.LatLng(newLat,newLong);
	var icon = gwsPin2();
	bounds.extend(myLatlng);

	var marker = new google.maps.Marker({
			position : myLatlng,
			map : map,
			icon : icon,
			title : title
		});

	google.maps.event.addListener(marker,'click',function() {
			hideLegend();
			hookBalloon(map, marker, data, text);
	});	
	
	gmarkers.push(marker);
	return marker;
}


function gwsPin2() {
	
	return new google.maps.MarkerImage('images/citySurvey-Pin.png',
		new google.maps.Size(28, 40),
		new google.maps.Point(0, 0),
		new google.maps.Point(14, 40));
}


function toOrdinal (value) {
    var s = String(value),
      len = s.length,
      end  = s.substr(len - 1, 1),
      teen = len > 1 && s.substr(len - 2, 1) === "1",
      ord = "th";
    if (end === "1" && !teen) {
      ord = "st";
    } else if (end === "2" && !teen) {
      ord = "nd";
    } else if (end === "3" && !teen) {
      ord = "rd";
    }
    return value + '' + ord;
 }

String.prototype.replaceAll = function (find,replace) {
	var str = this;
	return str.replace(new RegExp(find,'g'), replace);
}

var currentMarker = null;
var currentData = null;


function hookBalloon(map, marker, jData, text) {

	if (infowindow != "")
		infowindow.close();
	
	var disableAutoPan = false;			// changed from true to false per Matt mentioning the cards don't always fit on screen
										// also removed the line below
	
	
	var trouble_making_pct = Math.round(jData.trouble_making);
	var trouble_receiving_pct = Math.round(jData.trouble_receiving);
	var trouble_internet_pct = Math.round(jData.trouble_internet);
	var trouble_receiving_cap = (100 - trouble_receiving_pct);
	var trouble_making_cap = (100 - trouble_making_pct);
	var trouble_internet_cap = (100 - trouble_internet_pct);
	var cityUPPER = jData.city.toUpperCase();
	
	var worst_room = jData.worst_room;
	// onclick="javascript:alert(\'Worst room is: ' + worst_room + '\');"  -- removed per Matt 6/16
	var worst_icon = '<img src="images/surveymap-' + worst_room.replace(' ','')  + '.png" alt="' + worst_room + '" />';
	
	var fewest_carrier = jData.fewest_complaints;
	var fewest_icon = '<img src="images/surveymap-logo-' + fewest_carrier + '.png"  alt="' + fewest_carrier + '" />';
	if (fewest_carrier == 'Vodafone') 
		fewest_icon = '<img src="images/surveymap-logo-vf.png" height="33" />';
		
	var most_carrier = jData.most_complaints;
	var most_icon = '<img src="images/surveymap-logo-' + most_carrier + '.png" alt="' + most_carrier + '" />';
	if (most_carrier == 'Vodafone') 
		most_icon = '<img src="images/surveymap-logo-vf.png" />';
	else if (most_carrier == '3/O2')
		most_icon = '<img src="images/surveymap-logo-3andO2.png" alt="3 and O2" />';
		
	
	contentString = template.replaceAll('{city}',cityUPPER)
							.replaceAll('{trouble_making_pct}',trouble_making_pct)
							.replaceAll('{trouble_making_cap}',trouble_making_cap)
							.replaceAll('{trouble_receiving_pct}',trouble_receiving_pct)
							.replaceAll('{trouble_receiving_cap}',trouble_receiving_cap)
							.replaceAll('{trouble_internet_pct}',trouble_internet_pct)
							.replaceAll('{trouble_internet_cap}',trouble_internet_cap)
							.replace('{worst_room}',worst_icon)
							.replace('{fewest_complaints}',fewest_icon)
							.replace('{most_complaints}',most_icon);
		
	infowindow = new InfoBubble({
			map : map,
			content : contentString,
			shadowStyle : 1,
			padding : 0,
			backgroundColor : 'rgb(255,255,255)',
			borderRadius : 0,
			arrowSize : 10,
			borderWidth : 0,
			borderColor : borderColor,
			disableAutoPan : disableAutoPan,
			hideCloseButton : false,
			arrowPosition : 50,
			backgroundClassName : '',
			arrowStyle : 0
		});
	infowindow.setBubbleOffset(0,bubbleOffsetHeight);
	infowindow.open(map, marker);
	
}


function stopIt(e) {
	e.stopPropagation();
}

function hideLegend() {
	if (isMobile() || getSize().width < 550)
		$("#legend").hide();
}

function showLegend() {
	$("#legend").show();
}

function closePopup() {

	if (infowindow != "")
		infowindow.close();
		
	$("#street-view").hide();
}

function isMobile() {
	var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
	var ua = navigator.userAgent.toLowerCase();
	var isAndroid = ua.indexOf("android") > -1;
	
	return isiPhone || isAndroid;
}

function getPin(src,top) {

	var path = 'pins/' + src;
	
	var y = 109;
	if (top == false)
		y = 0;
	return new google.maps.MarkerImage(path,
		new google.maps.Size(100, 99),
		new google.maps.Point(0, 0),
		new google.maps.Point(50, 99));
}


// bounds of the desired area
var allowedBounds = new google.maps.LatLngBounds(
     new google.maps.LatLng(51.4721,-.1829),
	 new google.maps.LatLng(51.5797,-.0443)
     
);

function getSize() {
	  var myWidth = 0, myHeight = 0;
	  if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	  }
	  //window.alert( 'Width = ' + myWidth );
	  
	  if (myWidth == 0) myWidth = 620;
	  if (myHeight == 0) myHeight = 500;
	  return {height: myHeight, width: myWidth};
	  //window.alert( 'Height = ' + myHeight );
	}

function doResize() {	
	var dimensions = getSize();
	var mapHeight = dimensions.height;
	var mapWidth = dimensions.width;
	
	//alert(dimensions.height)
	var headerHeight = $("#header").height();
	var recenterTop  = 20;
	if (headerHeight) {
		mapHeight = mapHeight - headerHeight;
		recenterTop = headerHeight;	// removed the + 12 so it's flush with top
	}
	$("#bg").width(dimensions.width);
	$("#bg").height(dimensions.height);
	$("#map_canvas").width(mapWidth + 'px');
	$("#map_canvas").height(mapHeight + 'px');
	$("#recenter_embed").css('top',recenterTop + 'px');
	$("#legend").css('top',(headerHeight) + 'px');
	$("#legend_opener").css('top',recenterTop + 'px');
}
	
function recenter() {
	//showLegend();
	doRecenterAction();
	if (infowindow != "")
		infowindow.close();
}

function doRecenterAction() {
	map.fitBounds(bounds);
	//alert(map.getZoom());
	if (isMobile()) {
		map.setZoom(5);
		//alert(map.getZoom());
	}
}

function initialize() {
	
	if (isMobile()) {
		mapCenter = mobileCenter;
	}
	doResize();
	
	
	
	var chilled = [{"featureType":"road","elementType":"geometry","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"hue":149},{"saturation":-78},{"lightness":0}]},{"featureType":"road.highway","stylers":[{"hue":-31},{"saturation":-40},{"lightness":2.8}]},{"featureType":"poi","elementType":"label","stylers":[{"visibility":"off"}]},{"featureType":"landscape","stylers":[{"hue":163},{"saturation":-26},{"lightness":-1.1}]},{"featureType":"transit","stylers":[{"visibility":"off"}]},{"featureType":"water","stylers":[{"hue":3},{"saturation":-24.24},{"lightness":-38.57}]}];
	var cleanCut = [{"featureType":"road","elementType":"geometry","stylers":[{"lightness":100},{"visibility":"simplified"}]},{"featureType":"water","elementType":"geometry","stylers":[{"visibility":"on"},{"color":"#C6E2FF"}]},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"color":"#C5E3BF"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"color":"#D1D1B8"}]}];
	var mine = [{"featureType":"road.highway.controlled_access","elementType":"geometry","stylers":[{"visibility":"on"}]},{"featureType":"poi.government"},{"featureType":"landscape.man_made","stylers":[{"hue":"#22ff00"},{"lightness":17}]},{"featureType":"administrative.country","stylers":[{"visibility":"off"}]},{"featureType":"administrative.province","stylers":[{"visibility":"off"}]},{"featureType":"administrative.locality","stylers":[{"visibility":"off"}]},{"featureType":"administrative.neighborhood","stylers":[{"visibility":"off"}]},{},{"featureType":"landscape.natural","stylers":[{"hue":"#1aff00"},{"saturation":-40}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"road.highway","stylers":[{"hue":"#ff0000"},{"saturation":-85},{"gamma":1.27}]},{"featureType":"road.arterial","stylers":[{"hue":"#ff0000"},{"saturation":38}]},{"featureType":"road.local","stylers":[{"hue":"#ff0000"},{"saturation":-74},{"lightness":-16}]},{}];
	
	var disablePoi = [
	   {
		 featureType: "poi",
		 stylers: [
		  { visibility: "off" }
		 ]   
		}
	];
	
	var oldTimey = [{"featureType":"administrative","stylers":[{"visibility":"off"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"road","stylers":[{"visibility":"simplified"}]},{"featureType":"water","stylers":[{"visibility":"simplified"}]},{"featureType":"transit","stylers":[{"visibility":"simplified"}]},{"featureType":"landscape","stylers":[{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"visibility":"on"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"visibility":"on"}]},{"featureType":"water","stylers":[{"color":"#84afa3"},{"lightness":52}]},{"stylers":[{"saturation":-77}]},{"featureType":"road"}];
	var mutedBrown = [{"elementType":"geometry","stylers":[{"hue":"#ff4400"},{"saturation":-68},{"lightness":-4},{"gamma":0.72}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"labels.icon"},{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"hue":"#0077ff"},{"gamma":3.1}]},{"featureType":"water","stylers":[{"hue":"#00ccff"},{"gamma":0.44},{"saturation":-33}]},{"featureType":"poi.park","stylers":[{"hue":"#44ff00"},{"saturation":-23}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"hue":"#007fff"},{"gamma":0.77},{"saturation":65},{"lightness":99}]},{"featureType":"water","elementType":"labels.text.stroke","stylers":[{"gamma":0.11},{"weight":5.6},{"saturation":99},{"hue":"#0091ff"},{"lightness":-86}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"lightness":-48},{"hue":"#ff5e00"},{"gamma":1.2},{"saturation":-23}]},{"featureType":"transit","elementType":"labels.text.stroke","stylers":[{"saturation":-64},{"hue":"#ff9100"},{"lightness":16},{"gamma":0.47},{"weight":2.7}]}];
	var apple = [{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"color":"#f7f1df"}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"color":"#d0e3b4"}]},{"featureType":"landscape.natural.terrain","elementType":"geometry","stylers":[{"visibility":"off"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"geometry","stylers":[{"color":"#fbd3da"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#bde6ab"}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffe15f"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#efd151"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"color":"black"}]},{"featureType":"transit.station.airport","elementType":"geometry.fill","stylers":[{"color":"#cfb2db"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#a2daf2"}]}];
	var paper = [{"featureType":"administrative","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"landscape","elementType":"all","stylers":[{"visibility":"simplified"},{"hue":"#0066ff"},{"saturation":74},{"lightness":100}]},{"featureType":"poi","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"off"},{"weight":0.6},{"saturation":-85},{"lightness":61}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"all","stylers":[{"visibility":"on"}]},{"featureType":"road.local","elementType":"all","stylers":[{"visibility":"on"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"water","elementType":"all","stylers":[{"visibility":"simplified"},{"color":"#5f94ff"},{"lightness":26},{"gamma":5.86}]}];
	var mapbox = [{"featureType":"water","stylers":[{"saturation":43},{"lightness":-11},{"hue":"#0088ff"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"hue":"#ff0000"},{"saturation":-100},{"lightness":99}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#808080"},{"lightness":54}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"color":"#ece2d9"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#ccdca1"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#767676"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"landscape.natural","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#b8cb93"}]},{"featureType":"poi.park","stylers":[{"visibility":"on"}]},{"featureType":"poi.sports_complex","stylers":[{"visibility":"on"}]},{"featureType":"poi.medical","stylers":[{"visibility":"on"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]}];
	
	var myOptions = {
		zoom : initialZoom,
		center : mapCenter,
		mapTypeId : google.maps.MapTypeId.ROADMAP,
		mapTypeControl : false,
		panControl: false,
		zoomControl: false,
		scaleControl: false,
		streetViewControl: false,
		styles: mapbox
	}

	if (isAndroid || isiPhone) {
		myOptions = {
			zoom : initialZoom,
			center : mapCenter,
			mapTypeId : google.maps.MapTypeId.ROADMAP,
			mapTypeControl : false,
			panControl: false,
			zoomControl: false,
			scaleControl: false,
			streetViewControl: false,
			styles: mapbox
		}
	}

	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

	google.maps.event.addListener(map, "click", function (e) {
		hideLegend();
		closePopup();
	});

	google.maps.event.addListener(map, "drag", function (e) {
		hideLegend();
	});
	
	for (var i = 0, length = surveyData.length; i < length; i++) {
		addPin(surveyData[i]);
	}
	
	doRecenterAction();
}

window.onresize = function (event) {
	doResize();
}		

$(document).ready(function () {
    $(window).bind('resize', doResize());
    $(window).trigger('resize');


});


$(document).ready(function () {
	initialize();

});


var template = '<div class="bubble-main">' +
  '<div class="emphasis-bar"></div>' +
  '<div class="location-title">{city}</div>' +
  '<div class="bubble-inner">' +
    '<div class="clearfix divider1"></div>' +
    '<div class="signalblock-wrapper">' +
      '<div class="stat-row">' +
        '<div class="signalblock-column1">' +
          '<div class="block-title">Trouble<br />making calls:</div>' +
		'</div>' +
		'<div class="signalblock-column2">' +
          '<div class="pct">{trouble_making_pct}%</div>' +
        '</div>' +
        '<div class="signalblock-column3">' +
          '<div class="block-title">Worst room<br />for blackspots:</div>' +
		'</div>' +
		'<div class="signalblock-column4">' +
          '<div class="block-stat">{worst_room}</div>' +
        '</div>' +
      '</div>' +
      '<div class="clearfix"></div>' +
      '<div class="stat-row">' +
        '<div class="signalblock-column1">' +
          '<div class="block-title">Trouble with<br />mobile data:</div>' +
		'</div>' +
		'<div class="signalblock-column2">' +
		  '<div class="pct">{trouble_internet_pct}%</div>' +
        '</div>' +
       ' <div class="signalblock-column3">' +
          '<div class="block-title">Most<br />complaints:</div>' +
		'</div>' +
		'<div class="signalblock-column4">' +
          '<div class="block-stat">{most_complaints}</div>' +
        '</div>' +
      '</div>' +
      '<div class="clearfix"></div>' +
      '<div class="stat-row">' +
        '<div class="signalblock-column1">' +
          '<div class="block-title">Trouble<br />receiving calls:</div>' +
		 '</div>' +
		'<div class="signalblock-column2">' +
		  '<div class="pct">{trouble_receiving_pct}%</div>' +
        '</div>' +
        '<div class="signalblock-column3">' +
          '<div class="block-title">Fewest complaints:</div>' +
		 '</div>' +
		'<div class="signalblock-column4">' +
          '<div class="block-stat">{fewest_complaints}</div>' +
        '</div>' +
      '</div>' +
      '<div class="clearfix"></div>' +
    '</div>' +
    '<div class="clearfix divider1"></div>' +
    '<div class="bubble-footer">' +
      '<div class="maphook-logo"><a href="http://www.maphook.com" target="_blank"> <img width="71" border="0" height="29" alt="" src="images/mh-small-logo.png" alight="left"> </a></div>' +
      '<div class="gws-logo"> <a href="http://www.gwsolutions.com" target="_blank"> <img width="43" border="0" align="right" height="28" style="margin-right: 8px;" src="http://b43be75d9da2bcede307-fe0d0a85cf8322c1eb93c10ee9412de9.r25.cf5.rackcdn.com/gws-logo-forbubble.png"> </a> </div>' +
  	  '<div class="onepoll-logo"><a href="http://news.onepoll.com" target="_blank"><img src="images/logo_onepoll_sm.png" border="0"  height="21" style="margin-top: 4px;" /></a></div>' +
    '</div>' +
  '</div>' +
'</div>';
/*  Removed caret portion
'<div class="bubble-carret">' +
  '<div style="position: relative; margin-top: 0px;">' +
    '<div class="down-arrow"></div>' +
  '</div>' +
'</div>';
*/


var surveyData = [{"city":"London","latitude":51.5072,"longitude":-0.1275,"trouble_making":"40.64","trouble_receiving":"35.86","trouble_internet":"34.26","worst_room":"Living room","most_complaints":"3","fewest_complaints":"Vodafone"},
{"city":"Edinburgh","latitude":55.9531,"longitude":-3.1889,"trouble_making":"31.82","trouble_receiving":"27.27","trouble_internet":"31.82","worst_room":"Living room","most_complaints":"EE","fewest_complaints":"Vodafone"},
{"city":"Cardiff","latitude":51.4833,"longitude":-3.1833,"trouble_making":"47.54","trouble_receiving":"47.54","trouble_internet":"36.07","worst_room":"Kitchen","most_complaints":"3/O2","fewest_complaints":"Vodafone"},
{"city":"Belfast","latitude":54.597,"longitude":-5.93,"trouble_making":"34.69","trouble_receiving":"32.65","trouble_internet":"36.73","worst_room":"Kitchen","most_complaints":"O2","fewest_complaints":"3"},
{"city":"Bristol","latitude":51.45,"longitude":-2.5833,"trouble_making":"38.57","trouble_receiving":"32.86","trouble_internet":"38.57","worst_room":"Living room","most_complaints":"O2","fewest_complaints":"EE"},
{"city":"Birmingham","latitude":52.4831,"longitude":-1.8936,"trouble_making":"34.48","trouble_receiving":"31.03","trouble_internet":"30.17","worst_room":"Living room","most_complaints":"EE","fewest_complaints":"Vodafone"},
{"city":"Nottingham","latitude":52.95,"longitude":-1.1333,"trouble_making":"24.24","trouble_receiving":"22.73","trouble_internet":"24.24","worst_room":"Bedroom","most_complaints":"3","fewest_complaints":"O2"},
{"city":"Liverpool","latitude":53.4,"longitude":-3,"trouble_making":"36.36","trouble_receiving":"38.18","trouble_internet":"40","worst_room":"Living room","most_complaints":"3","fewest_complaints":"EE"},
{"city":"Manchester","latitude":53.4667,"longitude":-2.2333,"trouble_making":"29.37","trouble_receiving":"26.19","trouble_internet":"30.95","worst_room":"Living room","most_complaints":"3","fewest_complaints":"Vodafone"},
{"city":"Glasgow","latitude":55.858,"longitude":-4.259,"trouble_making":"16.67","trouble_receiving":"16.67","trouble_internet":"21.21","worst_room":"Kitchen","most_complaints":"Vodafone","fewest_complaints":"EE"},
{"city":"Sheffield","latitude":53.3836,"longitude":-1.4669,"trouble_making":"28.13","trouble_receiving":"25","trouble_internet":"28.13","worst_room":"Kitchen","most_complaints":"Vodafone","fewest_complaints":"3"},
{"city":"Leicester","latitude":52.6333,"longitude":-1.1333,"trouble_making":"34.62","trouble_receiving":"30.77","trouble_internet":"28.85","worst_room":"Kitchen","most_complaints":"Vodafone","fewest_complaints":"3"},
{"city":"Southampton","latitude":50.9,"longitude":-1.4,"trouble_making":"26.58","trouble_receiving":"25.32","trouble_internet":"25.32","worst_room":"Kitchen","most_complaints":"O2","fewest_complaints":"Vodafone"},
{"city":"Leeds","latitude":53.7997,"longitude":-1.5492,"trouble_making":"39.22","trouble_receiving":"31.37","trouble_internet":"29.41","worst_room":"Bedroom","most_complaints":"Vodafone","fewest_complaints":"3"},
{"city":"Norwich","latitude":52.632851,"longitude":1.290969,"trouble_making":"35.82","trouble_receiving":"31.34","trouble_internet":"34.33","worst_room":"Living room","most_complaints":"EE","fewest_complaints":"3"},
];

Anon7 - 2021