|
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 : |
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;
function handleTile(title) {
for (var i = 0; i < gmarkers.length; i++) {
if (gmarkers[i].title == title) {
map.setZoom(14);
google.maps.event.trigger(gmarkers[i],'click');
return;
}
}
alert('No data was gathered for the "' + title + '" tile');
}
function addPin(data) {
icon = getBeerPin();
var myLatlng = new google.maps.LatLng(data.latitude, data.longitude);
bounds.extend(myLatlng);
var marker = new google.maps.Marker({
position : myLatlng,
map : map,
icon : icon,
title : data.title
});
/*google.maps.event.addListener(marker,'mouseover',function() {
hookOver(map,marker,data);
});*/
google.maps.event.addListener(marker,'click',function() {
hookOver(map,marker,data);
});
/*google.maps.event.addListener(marker, 'click', function () {
hookBalloon(map, marker, data);
});
*/
gmarkers.push(marker);
return marker;
}
var voiceOnly = false;
String.prototype.replaceAll = function (find,replace) {
var str = this;
return str.replace(new RegExp(find,'g'), replace);
}
function loadSteetView(obj)
{
return;
var position = new google.maps.LatLng(obj.latitude,obj.longitude);
var heading = 34;
if (obj.heading) heading = obj.heading;
var panoramaOptions = {
position: position,
pov: {
heading: heading,
pitch: 0
}
};
/*var div = document.createElement('div');
document.body.appendChild(div);
div.id = 'Street_' + obj.title.replaceAll(' ','');
div.className = 'steet-view';
div.width = '400px';
div.height = '200px';
alert(div.id);*/
var panorama = new google.maps.StreetViewPanorama(document.getElementById('street-view'), panoramaOptions);
map.setStreetView(panorama);
$("#street-view").show();
//return div;
}
var currentMarker = null;
var currentData = null;
function hookOver(map,marker,jData) {
if (infowindow != "")
infowindow.close();
var borderColor = "#4066AD"; //jData.color;
var captionColor = "#ffffff";
var titleName = jData.title;
var photo = (jData.photo != '' ? jData.photo : 'cheese.jpg');
var disableAutoPan = false; // changed from true to false per Matt mentioning the cards don't always fit on screen
// also removed the line below
//if (jData.title == 'The Rocket' || isiPhone || isAndroid) disableAutoPan = false;
// rounded corners frmoved from the TD per Matt: -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px;
var simplePopup = '<div class="PPwrapper-NW"><div class="PPheaderframe"' +
'style="background-color: ' + borderColor + ' !important;" ><h1 style="color: ' +
captionColor + '">' + titleName + '</h1></div>' +
'<div class="PPinner-wrapper-NW"><img style="padding-top: 5px;" src="http://88d7ba627ed950559363-30e28468b1509b2df5dcc8eb3b617e7c.r8.cf2.rackcdn.com/london/photos/' + photo + '\" width="100%" />' +
'' +
//'<input type="button" value="See Results" onclick="hookPopup()" />' +
'<table cellspacing="0" cellpadding="0" style="padding-top: 8px; padding-bottom: 5px; width: 100%">' +
'<tr>' +
' <td align="center" height="32"' +
'bgcolor="#4066AD" style="color: #ffffff; display: block; border:1px solid navy;"><a href="#" onclick="javascript:hookPopup(); return false;" style="font-size:15px; font-weight:' +
'bold; text-decoration: none; line-height:32px; width:100%; display:inline-block"><div style="color:' +
'#ffffff; padding:0px 10px 0px 20px">SEE THE RESULTS</div></a></td>' +
' </tr>' +
' </table>' +
'</div></div>';
infowindow = new InfoBubble({
map : map,
content : simplePopup,
shadowStyle : 1,
padding : 0,
backgroundColor : 'rgb(255,255,255)',
borderRadius : 0,
arrowSize : 10,
borderWidth : 4,
borderColor : borderColor,
disableAutoPan : disableAutoPan,
hideCloseButton : false,
arrowPosition : 50,
backgroundClassName : 'popbubble',
arrowStyle : 0
});
infowindow.open(map, marker);
currentMarker = marker;
currentData = jData;
}
function hookPopup() {
hookBalloon(map,currentMarker,currentData);
}
function hookBalloon(map, marker, jData) {
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
//if (jData.title == 'The Rocket' || isiPhone || isAndroid) disableAutoPan = false;
var borderColor = "#4066AD"; //jData.color;
captionColor = "#ffffff";
titleName = jData.title;
//if (jData.color == '#E9E73B' || jData.color == 'White' || jData.color == '#FFFFFF' || jData.color == '#EB9C22' || jData.color == '#95D2F3')
// captionColor = "#000000";
var photo = (jData.photo != '' ? jData.photo : 'cheese.jpg');
var isiPhone = navigator.userAgent.match(/iPhone/i) != "";
loadSteetView(jData);
var packetResults =
"<div class=\"tabs-2\" style=\"display:none;\">" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>3G DOWNLOAD</h2>" +
"<div class=\"PPhalfL PPclearfix\">" + generateGraphic2(jData['3_3g_dl_pct'],jData['3_3g_dl'],' Mbps','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_3g_dl_pct'],jData['ee_3g_dl'],' Mbps','EE') + "</div>" +
"<div class=\"PPhalfL PPclearfix\">" + generateGraphic2(jData['o2_3g_dl_pct'],jData['o2_3g_dl'],' Mbps','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_3g_dl_pct'],jData['vodafone_3g_dl'],' Mbps','Vodafone') + "</div>" +
"</div>" +
"<div class=\"PPdividerline PPclearfix\"></div>" +
"</div>" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>3G UPLOAD</h2>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_3g_ul_pct'],jData['3_3g_ul'],' Mbps','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_3g_ul_pct'],jData['ee_3g_ul'],' Mbps','EE') + "</div>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_3g_ul_pct'],jData['o2_3g_ul'],' Mbps','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_3g_ul_pct'],jData['vodafone_3g_ul'],' Mbps','Vodafone') + "</div>" +
"</div>" +
"<div class=\"PPdividerline PPclearfix\"></div>" +
"</div>" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>3G TASK SUCCESS RATE</h2>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_3g_tsr_pct'],jData['3_3g_tsr'],' %','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_3g_tsr_pct'],jData['ee_3g_tsr'],' %','EE') + "</div>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_3g_tsr_pct'],jData['o2_3g_tsr'],' %','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_3g_tsr_pct'],jData['vodafone_3g_tsr'],' %','Vodafone') + "</div>" +
"</div>" +
"</div>" +
"</div>" +
"<div class=\"tabs-3\" style=\"display:none;\">" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>4G DOWNLOAD</h2>" +
"<div class=\"PPhalfL PPclearfix\">" + generateGraphic2(jData['3_4g_dl_pct'],jData['3_4g_dl'],' Mbps','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_4g_dl_pct'],jData['ee_4g_dl'],' Mbps','EE') + "</div>" +
"<div class=\"PPhalfL PPclearfix\">" + generateGraphic2(jData['o2_4g_dl_pct'],jData['o2_4g_dl'],' Mbps','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_4g_dl_pct'],jData['vodafone_4g_dl'],' Mbps','Vodafone') + "</div>" +
"</div>" +
"<div class=\"PPdividerline PPclearfix\"></div>" +
"</div>" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>4G UPLOAD</h2>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_4g_ul_pct'],jData['3_4g_ul'],' Mbps','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_4g_ul_pct'],jData['ee_4g_ul'],' Mbps','EE') + "</div>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_4g_ul_pct'],jData['o2_4g_ul'],' Mbps','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_4g_ul_pct'],jData['vodafone_4g_ul'],' Mbps','Vodafone') + "</div>" +
"</div>" +
"<div class=\"PPdividerline PPclearfix\"></div>" +
"</div>" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPmetric\"><h2>4G TASK SUCCESS RATE</h2>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_4g_tsr_pct'],jData['3_4g_tsr'],' %','3') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['ee_4g_tsr_pct'],jData['ee_4g_tsr'],' %','EE') + "</div>" +
"<div class=\"PPhalfL\"><div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_4g_tsr_pct'],jData['o2_4g_tsr'],' %','O2') + "</div>" +
"<div class=\"PPhalfR\">" + generateGraphic2(jData['vodafone_4g_tsr_pct'],jData['vodafone_4g_tsr'],' %','Vodafone') + "</div>" +
"</div>" +
"</div>" +
"</div>";
var voicePacketTabs = "<br /><div class=\"PPtabs\"><ul>" +
"<li onclick=\"javascript:switchTab(1); return false;\" class=\"selected\"><a class=\"tab-1\" href=\"#tabs-1\" >VOICE</a></li>" +
"<li onclick=\"javascript:switchTab(2); return false;\"><a class=\"tab-2\" href=\"#tabs-2\">3G DATA</a></li>" +
"<li onclick=\"javascript:switchTab(3); return false;\" style=\"width: 90px !important; margin-right:0px !important\"><a class=\"tab-3\" href=\"#tabs-3\">4G DATA</a></li></ul>" +
"</div>"; // end of tabs
contentString = '<div class="PPwrapper-NW"><div class="PPheaderframe"' +
'style="background-color: ' + borderColor + ' !important;" ><h1 style="color: ' +
captionColor + '">' + titleName + '</h1>' +
//'<img src="photos/' + photo + '\" width="100%" />' +
'</div>' +
'<div class="PPinner-wrapper-NW"><div class=\"PPbodyframe\">' +
'<div class=\"PPclearfix\">' +
(voiceOnly ? '' : voicePacketTabs) +
"<div class=\"PPborder\">" +
"<div class=\"tabs-1\">" +
"<div class=\"PPclearfix\"><div class=\"PPmetric\"><h2>SUCCESSFUL CALL SETUP</h2>" +
"<div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_accessibility_pct'],jData['3_accessibility'],' %','3') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['ee_accessibility_pct'],jData['ee_accessibility'],' %','EE') +
"</div><div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_accessibility_pct'],jData['o2_accessibility'],' %','O2') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['vodafone_accessibility_pct'],jData['vodafone_accessibility'],' %','Vodafone') +
"</div>" +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div class=\"PPmetric\"><h2>SUCCESSFUL CALL COMPLETION</h2>" +
"<div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_retainability_pct'],jData['3_retainability'],' %','3') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['ee_retainability_pct'],jData['ee_retainability'],' %','EE') +
"</div><div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_retainability_pct'],jData['o2_retainability'],' %','O2') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['vodafone_retainability_pct'],jData['vodafone_retainability'],' %','Vodafone') +
"</div>" +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div class=\"PPmetric\"><h2>VOICE QUALITY</h2>" +
"<div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['3_quality_pct'],jData['3_quality'],' %','3') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['ee_quality_pct'],jData['ee_quality'],' %','EE') +
"</div><div class=\"PPhalfL\">" +
"<div class=\"PPclearfix \"></div>" + generateGraphic2(jData['o2_quality_pct'],jData['o2_quality'],' %','O2') +
"</div><div class=\"PPhalfR\">" +
"" + generateGraphic2(jData['vodafone_quality_pct'],jData['vodafone_quality'],' %','Vodafone') +
"</div>" +
"</div></div>" +
"</div>" +
( voiceOnly ? '' : packetResults) +
"</div>" + // PPborder
"<div class=\"PPclearfix PPmhlogo\"><a target=\"_blank\" href=\"http://www.maphook.com\">" +
"<img alight=\"left\" src=\"http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/poweredby-maphook-tiny.png\" style=\"padding-top:10px\" width=\"110\" height=\"18\" alt=\"\" border=\"0\" /></a>" +
"<a target=\"_blank\" href=\"http://www.gwsolutions.com\"><img align=\"right\" src=\"http://b43be75d9da2bcede307-fe0d0a85cf8322c1eb93c10ee9412de9.r25.cf5.rackcdn.com/gws-logo-forbubble.png\" width=\"43\" height=\"28\" border=\"0\" /></a>" +
"</div>" +
"</div></div></div>";
infowindow = new InfoBubble({
map : map,
content : contentString,
shadowStyle : 1,
padding : 0,
backgroundColor : 'rgb(255,255,255)',
borderRadius : 0,
arrowSize : 10,
borderWidth : 4,
borderColor : borderColor,
disableAutoPan : disableAutoPan,
hideCloseButton : false,
arrowPosition : 50,
backgroundClassName : 'popbubble',
arrowStyle : 0
});
infowindow.open(map, marker);
}
function switchTab(idx) {
if (idx == 1) {
$(".tabs-1").show();
$(".tabs-2").hide();
$(".tabs-3").hide();
$(".tab-1").parent().addClass("selected");
$(".tab-2").parent().removeClass("selected");
$(".tab-3").parent().removeClass("selected");
}
if (idx == 2) {
$(".tabs-2").show();
$(".tabs-1").hide();
$(".tabs-3").hide();
$(".tab-1").parent().removeClass("selected");
$(".tab-2").parent().addClass("selected");
$(".tab-3").parent().removeClass("selected");
}
if (idx == 3) {
$(".tabs-3").show();
$(".tabs-1").hide();
$(".tabs-2").hide();
$(".tab-1").parent().removeClass("selected");
$(".tab-2").parent().removeClass("selected");
$(".tab-3").parent().addClass("selected");
}
}
function generateWinner(title,field,match) {
return "";
}
function generateGraphic(percent,value,label) {
var totalHeight = 27.00;
var shadedHeight = totalHeight * percent; // graphic is regular proportion
var diffHeight = totalHeight - shadedHeight;
/*if (value == "") {
value = Math.round((percent * 100),2) + '%';
shadedWidth = (totalWidth * 2 * percent) - totalWidth; // so that the graphic goes from 50 to 100 instead of 0 to 100 (this is for actual percentages)
}*/
if (label == ' %' || label == '%')
value = (Math.round(value * 1000)/10);//Math.round(value * 100);
var output = '';
if (value.toString().indexOf('-999') >= 0) {
output = '<div class=\"PPdatavalue\">N/A</div><div class=\"PPgraphic\"><div style="background-image: url(spacer.png); height: ' + totalHeight + 'px; width: 20px;"></div></div>';
}
else {
output = '<div class=\"PPdatavalue\">' + value + label + '</div><div class=\"PPgraphic\"><div style="background-image: url(pint_full_sm.png); height: ' + totalHeight + 'px; width: 20px;">' +
'<div style="height: ' + diffHeight + 'px; width: 20px; overflow: hidden; background-image: url(pint_empty_sm.png)"></div></div>' +
'</div>';
}
return output;
}
function generateGraphic2(percent,value,label,carrier) {
if (ACTUAL_PERCENTAGES) {
if (label == ' %' || label == '%')
percent = value;
}
// OVERRIDE ADDED PER PAUL/MATT TO SHOW 0 IN PLACE OF N/A
if (value.toString().indexOf('-999') >= 0) {
value = 0;
percent = 0;
}
if (carrier == null) carrier = '';
var totalHeight = 32.00; // actual 38, removed 6 pix to offset
var extraHeight = 6;
var shadedHeight = totalHeight * percent; // graphic is regular proportion
var diffHeight = totalHeight - shadedHeight;
// add the extra height back
diffHeight += extraHeight;
totalHeight += extraHeight;
/*if (value == "") {
value = Math.round((percent * 100),2) + '%';
shadedWidth = (totalWidth * 2 * percent) - totalWidth; // so that the graphic goes from 50 to 100 instead of 0 to 100 (this is for actual percentages)
}*/
if (label == ' %' || label == '%')
value = (Math.round(value * 1000)/10);//Math.round(value * 100);
else
value = (Math.round(value*10))/10;
var output = '';
if (value.toString().indexOf('-999') >= 0) {
output = '<div class=\"PPgraphic\"><div style="background-image: url(pint_empty.png?update=1); height: ' + totalHeight + 'px; width: 27px;"></div>' +
'</div>' +
'<div class="PPcarrierInline">' + carrier + '</div>' +
'<div class="PPdatavalueInline">(n/a)</div>'
;
}
else {
output = '<div class=\"PPgraphic\"><div style="background-image: url(http://88d7ba627ed950559363-30e28468b1509b2df5dcc8eb3b617e7c.r8.cf2.rackcdn.com/london/ale_full.png?update=1); height: ' + totalHeight + 'px; width: 27px;">' +
'<div style="height: ' + diffHeight + 'px; width: 27px; overflow: hidden; background-image: url(http://88d7ba627ed950559363-30e28468b1509b2df5dcc8eb3b617e7c.r8.cf2.rackcdn.com/london/ale_empty.png?update=1)"></div></div>' +
'</div>' +
'<div class="PPcarrierInline">' + carrier + '</div>' +
'<div class="PPdatavalueInline">(' + value + label + ')</div>'
;
}
return output;
}
function closePopup() {
if (infowindow != "")
infowindow.close();
$("#street-view").hide();
}
function getBeerPin() {
return new google.maps.MarkerImage('http://88d7ba627ed950559363-30e28468b1509b2df5dcc8eb3b617e7c.r8.cf2.rackcdn.com/london/ale_full.png',
new google.maps.Size(27, 38),
new google.maps.Point(0, 0),
new google.maps.Point(14, 38));
}
function getRegisterPin() {
return new google.maps.MarkerImage('http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/pin-register-28x33.png',
new google.maps.Size(28, 33),
new google.maps.Point(0, 0),
new google.maps.Point(14, 33));
}
var mapCenter = new google.maps.LatLng(51.517394, -0.122388);
var lastValidCenter = mapCenter;
var initialZoom = 14;
// 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)
$("#bg").width(dimensions.width);
$("#bg").height(dimensions.height);
$("#map_canvas").width(mapWidth + 'px');
$("#map_canvas").height(mapHeight + 'px');
}
function recenter() {
map.setCenter(mapCenter);
map.setZoom(initialZoom);
if (infowindow != "")
infowindow.close();
}
function initialize() {
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 myOptions = {
zoom : initialZoom,
center : mapCenter,
mapTypeId : google.maps.MapTypeId.ROADMAP,
mapTypeControl : false,
panControl: false,
zoomControl: false,
scaleControl: false,
streetViewControl: false,
styles: mutedBrown
}
if (isAndroid || isiPhone) {
myOptions = {
zoom : initialZoom,
center : mapCenter,
mapTypeId : google.maps.MapTypeId.ROADMAP,
mapTypeControl : false,
panControl: false,
zoomControl: false,
scaleControl: false,
streetViewControl: false,
styles: mutedBrown
}
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map, "click", function (e) {
closePopup();
});
google.maps.event.addListener(map, 'center_changed', function() {
if (allowedBounds.contains(map.getCenter())) {
//alert('allowed');
// still within valid bounds, so save the last valid position
lastValidCenter = map.getCenter();
return;
}
//alert('not allowed: ' + map.getCenter());
// not valid anymore => return to last valid position
map.setCenter(lastValidCenter);
});
for (var i = 0, length = jsonData.length; i < length; i++) {
addPin(jsonData[i]);
}
}
window.onresize = function (event) {
doResize();
}
$(document).ready(function () {
$(window).bind('resize', doResize());
$(window).trigger('resize');
});
$(document).ready(function () {
initialize();
});
var jsonData =
[{"title":"The Kings Head","latitude":51.508671,"longitude":-0.141339,"color":"#02AC58","photo":"kings_head2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":0.964,"vodafone_accessibility_pct":0.78,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.998,"o2_quality_pct":0.98,"vodafone_quality":1.000,"vodafone_quality_pct":1.00,"3_3g_dl":3.6,"3_3g_dl_pct":0.61,"3_3g_ul":1.2,"3_3g_ul_pct":0.58,"3_3g_tsr":0.986,"3_3g_tsr_pct":0.95,"o2_3g_dl":1.9,"o2_3g_dl_pct":0.33,"o2_3g_ul":1.6,"o2_3g_ul_pct":0.76,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":3.7,"ee_3g_dl_pct":0.63,"ee_3g_ul":2.1,"ee_3g_ul_pct":1.00,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":5.8,"vodafone_3g_dl_pct":1.00,"vodafone_3g_ul":2.0,"vodafone_3g_ul_pct":0.95,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":8.7,"3_4g_dl_pct":1.00,"3_4g_ul":0.4,"3_4g_ul_pct":0.06,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":5.8,"o2_4g_dl_pct":0.67,"o2_4g_ul":7.1,"o2_4g_ul_pct":0.87,"o2_4g_tsr":0.647,"o2_4g_tsr_pct":0.24,"ee_4g_dl":7.4,"ee_4g_dl_pct":0.85,"ee_4g_ul":1.7,"ee_4g_ul_pct":0.21,"ee_4g_tsr":0.958,"ee_4g_tsr_pct":0.84,"vodafone_4g_dl":4.3,"vodafone_4g_dl_pct":0.49,"vodafone_4g_ul":8.1,"vodafone_4g_ul_pct":1.00,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Spread Eagle ","latitude":51.514363,"longitude":-0.147448,"color":"#EB9C22","photo":"spread_eagle2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":1.000,"vodafone_quality_pct":1.00,"3_3g_dl":2.7,"3_3g_dl_pct":0.65,"3_3g_ul":0.7,"3_3g_ul_pct":0.39,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":1.7,"o2_3g_dl_pct":0.39,"o2_3g_ul":0.3,"o2_3g_ul_pct":0.19,"o2_3g_tsr":0.839,"o2_3g_tsr_pct":0.52,"ee_3g_dl":2.6,"ee_3g_dl_pct":0.62,"ee_3g_ul":0.3,"ee_3g_ul_pct":0.16,"ee_3g_tsr":0.971,"ee_3g_tsr_pct":0.89,"vodafone_3g_dl":4.2,"vodafone_3g_dl_pct":1.00,"vodafone_3g_ul":1.8,"vodafone_3g_ul_pct":1.00,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":6.3,"3_4g_dl_pct":1.00,"3_4g_ul":1.6,"3_4g_ul_pct":0.53,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":-999.0,"o2_4g_dl_pct":-158.57,"o2_4g_ul":-999.0,"o2_4g_ul_pct":-340.54,"o2_4g_tsr":-999.0,"o2_4g_tsr_pct":0.00,"ee_4g_dl":3.5,"ee_4g_dl_pct":0.56,"ee_4g_ul":0.0,"ee_4g_ul_pct":0.01,"ee_4g_tsr":0.786,"ee_4g_tsr_pct":0.42,"vodafone_4g_dl":4.0,"vodafone_4g_dl_pct":0.64,"vodafone_4g_ul":2.9,"vodafone_4g_ul_pct":1.00,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Clarence","latitude":51.507812,"longitude":-0.141461,"color":"#E9E73B","photo":"clarence2.jpg","3_accessibility":0.917,"3_accessibility_pct":0.56,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":0.727,"vodafone_accessibility_pct":0.15,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":0.933,"o2_retainability_pct":0.63,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.998,"o2_quality_pct":0.98,"vodafone_quality":0.867,"vodafone_quality_pct":0.40,"3_3g_dl":0.7,"3_3g_dl_pct":0.21,"3_3g_ul":0.2,"3_3g_ul_pct":0.09,"3_3g_tsr":0.923,"3_3g_tsr_pct":0.74,"o2_3g_dl":2.9,"o2_3g_dl_pct":0.87,"o2_3g_ul":0.9,"o2_3g_ul_pct":0.48,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":3.3,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.9,"ee_3g_ul_pct":1.00,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":0.6,"vodafone_3g_dl_pct":0.17,"vodafone_3g_ul":0.0,"vodafone_3g_ul_pct":0.02,"vodafone_3g_tsr":0.700,"vodafone_3g_tsr_pct":0.30,"3_4g_dl":-999.0,"3_4g_dl_pct":-156.84,"3_4g_ul":-999.0,"3_4g_ul_pct":-275.78,"3_4g_tsr":-999.000,"3_4g_tsr_pct":0.00,"o2_4g_dl":6.4,"o2_4g_dl_pct":1.00,"o2_4g_ul":3.6,"o2_4g_ul_pct":1.00,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":-999.0,"ee_4g_dl_pct":-156.84,"ee_4g_ul":-999.0,"ee_4g_ul_pct":-275.78,"ee_4g_tsr":-999.000,"ee_4g_tsr_pct":0.00,"vodafone_4g_dl":4.6,"vodafone_4g_dl_pct":0.73,"vodafone_4g_ul":3.6,"vodafone_4g_ul_pct":1.00,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Comedy","latitude":51.510033,"longitude":-0.132157,"color":"#FFFFFF","photo":"comedy2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":0.999,"vodafone_quality_pct":1.00,"3_3g_dl":2.6,"3_3g_dl_pct":1.00,"3_3g_ul":1.6,"3_3g_ul_pct":1.00,"3_3g_tsr":0.947,"3_3g_tsr_pct":1.00,"o2_3g_dl":3.7,"o2_3g_dl_pct":1.00,"o2_3g_ul":1.4,"o2_3g_ul_pct":1.00,"o2_3g_tsr":0.950,"o2_3g_tsr_pct":1.00,"ee_3g_dl":6.1,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.1,"ee_3g_ul_pct":1.00,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":2.9,"vodafone_3g_dl_pct":1.00,"vodafone_3g_ul":1.4,"vodafone_3g_ul_pct":1.00,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":1.6,"3_4g_dl_pct":1.00,"3_4g_ul":0.2,"3_4g_ul_pct":1.00,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":5.9,"o2_4g_dl_pct":1.00,"o2_4g_ul":0.4,"o2_4g_ul_pct":1.00,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":9.8,"ee_4g_dl_pct":1.00,"ee_4g_ul":2.0,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":4.7,"vodafone_4g_dl_pct":1.00,"vodafone_4g_ul":1.5,"vodafone_4g_ul_pct":1.00,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Moon Under Water","latitude":51.51028,"longitude":-0.12926,"color":"#95D2F3","photo":"moon2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.987,"o2_quality_pct":0.91,"vodafone_quality":0.998,"vodafone_quality_pct":0.99,"3_3g_dl":0.8,"3_3g_dl_pct":0.15,"3_3g_ul":0.8,"3_3g_ul_pct":0.55,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":2.8,"o2_3g_dl_pct":0.52,"o2_3g_ul":1.2,"o2_3g_ul_pct":0.85,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":5.3,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.4,"ee_3g_ul_pct":1.00,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":3.8,"vodafone_3g_dl_pct":0.72,"vodafone_3g_ul":1.1,"vodafone_3g_ul_pct":0.80,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":0.7,"3_4g_dl_pct":0.07,"3_4g_ul":0.1,"3_4g_ul_pct":0.01,"3_4g_tsr":0.324,"3_4g_tsr_pct":0.07,"o2_4g_dl":4.0,"o2_4g_dl_pct":0.40,"o2_4g_ul":2.4,"o2_4g_ul_pct":0.25,"o2_4g_tsr":0.903,"o2_4g_tsr_pct":0.68,"ee_4g_dl":10.0,"ee_4g_dl_pct":1.00,"ee_4g_ul":9.6,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":9.4,"vodafone_4g_dl_pct":0.94,"vodafone_4g_ul":4.7,"vodafone_4g_ul_pct":0.50,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"Victoria and Albert","latitude":51.522428,"longitude":-0.163512,"color":"#DD1F2A","photo":"victoria_albert2.jpg","3_accessibility":0.938,"3_accessibility_pct":0.65,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.958,"o2_quality_pct":0.74,"vodafone_quality":0.988,"vodafone_quality_pct":0.92,"3_3g_dl":0.5,"3_3g_dl_pct":0.14,"3_3g_ul":1.4,"3_3g_ul_pct":1.00,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":3.4,"o2_3g_dl_pct":1.00,"o2_3g_ul":0.9,"o2_3g_ul_pct":0.65,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":1.0,"ee_3g_dl_pct":0.28,"ee_3g_ul":1.0,"ee_3g_ul_pct":0.73,"ee_3g_tsr":0.967,"ee_3g_tsr_pct":0.88,"vodafone_3g_dl":1.6,"vodafone_3g_dl_pct":0.46,"vodafone_3g_ul":0.4,"vodafone_3g_ul_pct":0.29,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":5.5,"3_4g_dl_pct":0.83,"3_4g_ul":0.4,"3_4g_ul_pct":0.04,"3_4g_tsr":0.118,"3_4g_tsr_pct":0.03,"o2_4g_dl":-999.0,"o2_4g_dl_pct":-152.07,"o2_4g_ul":-999.0,"o2_4g_ul_pct":-117.02,"o2_4g_tsr":-999.000,"o2_4g_tsr_pct":0.00,"ee_4g_dl":6.6,"ee_4g_dl_pct":1.00,"ee_4g_ul":8.5,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":4.2,"vodafone_4g_dl_pct":0.64,"vodafone_4g_ul":2.9,"vodafone_4g_ul_pct":0.34,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Rocket","latitude":51.528193,"longitude":-0.1289,"color":"#FFFFFF","photo":"rocket2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":0.998,"ee_quality_pct":0.99,"o2_quality":0.994,"o2_quality_pct":0.96,"vodafone_quality":0.999,"vodafone_quality_pct":0.99,"3_3g_dl":4.2,"3_3g_dl_pct":1.00,"3_3g_ul":0.4,"3_3g_ul_pct":0.37,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":1.0,"o2_3g_dl_pct":0.25,"o2_3g_ul":0.9,"o2_3g_ul_pct":0.95,"o2_3g_tsr":0.968,"o2_3g_tsr_pct":0.88,"ee_3g_dl":1.1,"ee_3g_dl_pct":0.27,"ee_3g_ul":1.0,"ee_3g_ul_pct":1.00,"ee_3g_tsr":0.968,"ee_3g_tsr_pct":0.88,"vodafone_3g_dl":3.7,"vodafone_3g_dl_pct":0.89,"vodafone_3g_ul":0.6,"vodafone_3g_ul_pct":0.59,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":1.5,"3_4g_dl_pct":0.17,"3_4g_ul":5.7,"3_4g_ul_pct":0.60,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":5.3,"o2_4g_dl_pct":0.61,"o2_4g_ul":6.7,"o2_4g_ul_pct":0.71,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":6.8,"ee_4g_dl_pct":0.78,"ee_4g_ul":9.4,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":8.7,"vodafone_4g_dl_pct":1.00,"vodafone_4g_ul":5.9,"vodafone_4g_ul_pct":0.63,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Silver Cross","latitude":51.506582,"longitude":-0.127115,"color":"#FFFFFF","photo":"silver_cross2.jpg","3_accessibility":0.960,"3_accessibility_pct":0.76,"ee_accessibility":0.875,"ee_accessibility_pct":0.42,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":0.741,"vodafone_accessibility_pct":0.16,"3_retainability":0.958,"3_retainability_pct":0.75,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":0.991,"3_quality_pct":0.94,"ee_quality":0.989,"ee_quality_pct":0.93,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":0.932,"vodafone_quality_pct":0.62,"3_3g_dl":1.7,"3_3g_dl_pct":0.49,"3_3g_ul":0.2,"3_3g_ul_pct":0.24,"3_3g_tsr":0.971,"3_3g_tsr_pct":0.89,"o2_3g_dl":3.4,"o2_3g_dl_pct":1.00,"o2_3g_ul":0.9,"o2_3g_ul_pct":1.00,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":-999.0,"ee_3g_dl_pct":-296.04,"ee_3g_ul":0.6,"ee_3g_ul_pct":0.70,"ee_3g_tsr":0.275,"ee_3g_tsr_pct":0.05,"vodafone_3g_dl":0.1,"vodafone_3g_dl_pct":0.03,"vodafone_3g_ul":-999.0,"vodafone_3g_ul_pct":-1116.81,"vodafone_3g_tsr":0.061,"vodafone_3g_tsr_pct":0.02,"3_4g_dl":-999.0,"3_4g_dl_pct":-209.33,"3_4g_ul":-999.0,"3_4g_ul_pct":-1461.68,"3_4g_tsr":-999.000,"3_4g_tsr_pct":0.00,"o2_4g_dl":-999.0,"o2_4g_dl_pct":-209.33,"o2_4g_ul":-999.0,"o2_4g_ul_pct":-1461.68,"o2_4g_tsr":-999.000,"o2_4g_tsr_pct":0.00,"ee_4g_dl":4.8,"ee_4g_dl_pct":1.00,"ee_4g_ul":0.7,"ee_4g_ul_pct":1.00,"ee_4g_tsr":0.793,"ee_4g_tsr_pct":0.44,"vodafone_4g_dl":-999.0,"vodafone_4g_dl_pct":-209.33,"vodafone_4g_ul":-999.0,"vodafone_4g_ul_pct":-1461.68,"vodafone_4g_tsr":-999.000,"vodafone_4g_tsr_pct":0.00},
{"title":"Rose and Crown","latitude":51.504111,"longitude":-0.148883,"color":"#E9E73B","photo":"rose_crown2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":0.999,"ee_quality_pct":0.99,"o2_quality":0.998,"o2_quality_pct":0.98,"vodafone_quality":1.000,"vodafone_quality_pct":1.00,"3_3g_dl":6.1,"3_3g_dl_pct":0.72,"3_3g_ul":2.2,"3_3g_ul_pct":1.00,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":1.6,"o2_3g_dl_pct":0.19,"o2_3g_ul":1.0,"o2_3g_ul_pct":0.48,"o2_3g_tsr":0.972,"o2_3g_tsr_pct":0.89,"ee_3g_dl":8.4,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.9,"ee_3g_ul_pct":0.89,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":5.8,"vodafone_3g_dl_pct":0.69,"vodafone_3g_ul":1.2,"vodafone_3g_ul_pct":0.55,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":5.3,"3_4g_dl_pct":0.55,"3_4g_ul":0.2,"3_4g_ul_pct":0.02,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":3.4,"o2_4g_dl_pct":0.35,"o2_4g_ul":5.8,"o2_4g_ul_pct":0.55,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":9.7,"ee_4g_dl_pct":1.00,"ee_4g_ul":10.5,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":9.7,"vodafone_4g_dl_pct":1.00,"vodafone_4g_ul":7.9,"vodafone_4g_ul_pct":0.75,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"Marquess of Anglesey","latitude":51.512827,"longitude":-0.121256,"color":"#FFFFFF","photo":"marquess2.jpg","3_accessibility":0.846,"3_accessibility_pct":0.34,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":0.999,"vodafone_quality_pct":0.99,"3_3g_dl":0.7,"3_3g_dl_pct":0.20,"3_3g_ul":1.6,"3_3g_ul_pct":1.00,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":2.8,"o2_3g_dl_pct":0.84,"o2_3g_ul":1.4,"o2_3g_ul_pct":0.90,"o2_3g_tsr":0.976,"o2_3g_tsr_pct":0.91,"ee_3g_dl":3.4,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.1,"ee_3g_ul_pct":0.70,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":1.7,"vodafone_3g_dl_pct":0.51,"vodafone_3g_ul":0.6,"vodafone_3g_ul_pct":0.40,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":2.0,"3_4g_dl_pct":0.27,"3_4g_ul":4.6,"3_4g_ul_pct":0.75,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":4.9,"o2_4g_dl_pct":0.68,"o2_4g_ul":2.5,"o2_4g_ul_pct":0.41,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":7.3,"ee_4g_dl_pct":1.00,"ee_4g_ul":4.3,"ee_4g_ul_pct":0.70,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":4.1,"vodafone_4g_dl_pct":0.57,"vodafone_4g_ul":6.1,"vodafone_4g_ul_pct":1.00,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Wellington","latitude":51.511337,"longitude":-0.119474,"color":"#EB9C22","photo":"wellington2.jpg","3_accessibility":0.941,"3_accessibility_pct":0.66,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":0.941,"vodafone_retainability_pct":0.66,"3_quality":0.999,"3_quality_pct":0.99,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.999,"o2_quality_pct":0.99,"vodafone_quality":0.998,"vodafone_quality_pct":0.99,"3_3g_dl":0.6,"3_3g_dl_pct":0.16,"3_3g_ul":1.5,"3_3g_ul_pct":0.94,"3_3g_tsr":0.968,"3_3g_tsr_pct":0.88,"o2_3g_dl":3.1,"o2_3g_dl_pct":0.88,"o2_3g_ul":1.6,"o2_3g_ul_pct":1.00,"o2_3g_tsr":1.000,"o2_3g_tsr_pct":1.00,"ee_3g_dl":1.8,"ee_3g_dl_pct":0.50,"ee_3g_ul":1.4,"ee_3g_ul_pct":0.88,"ee_3g_tsr":1.000,"ee_3g_tsr_pct":1.00,"vodafone_3g_dl":3.6,"vodafone_3g_dl_pct":1.00,"vodafone_3g_ul":0.9,"vodafone_3g_ul_pct":0.56,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":1.6,"3_4g_dl_pct":0.15,"3_4g_ul":3.7,"3_4g_ul_pct":0.44,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":4.8,"o2_4g_dl_pct":0.46,"o2_4g_ul":4.1,"o2_4g_ul_pct":0.49,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":10.5,"ee_4g_dl_pct":1.00,"ee_4g_ul":8.4,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":3.9,"vodafone_4g_dl_pct":0.37,"vodafone_4g_ul":6.7,"vodafone_4g_ul_pct":0.81,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00},
{"title":"The Sherlock Holmes","latitude":51.50734,"longitude":-0.125333,"color":"#FFFFFF","photo":"sherlock2.jpg","3_accessibility":0.267,"3_accessibility_pct":0.01,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":0.929,"vodafone_accessibility_pct":0.61,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":0.959,"3_quality_pct":0.75,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":0.949,"o2_quality_pct":0.70,"vodafone_quality":0.942,"vodafone_quality_pct":0.66,"3_3g_dl":0.0,"3_3g_dl_pct":0.01,"3_3g_ul":-999.0,"3_3g_ul_pct":-755.45,"3_3g_tsr":0.070,"3_3g_tsr_pct":0.02,"o2_3g_dl":0.3,"o2_3g_dl_pct":0.11,"o2_3g_ul":0.2,"o2_3g_ul_pct":0.13,"o2_3g_tsr":0.500,"o2_3g_tsr_pct":0.14,"ee_3g_dl":2.8,"ee_3g_dl_pct":1.00,"ee_3g_ul":1.3,"ee_3g_ul_pct":1.00,"ee_3g_tsr":0.946,"ee_3g_tsr_pct":0.81,"vodafone_3g_dl":0.3,"vodafone_3g_dl_pct":0.11,"vodafone_3g_ul":0.0,"vodafone_3g_ul_pct":0.01,"vodafone_3g_tsr":0.533,"vodafone_3g_tsr_pct":0.15,"3_4g_dl":-999.0,"3_4g_dl_pct":-1878.56,"3_4g_ul":-999.0,"3_4g_ul_pct":-25482.41,"3_4g_tsr":-999.000,"3_4g_tsr_pct":0.00,"o2_4g_dl":-999.0,"o2_4g_dl_pct":-1878.56,"o2_4g_ul":-999.0,"o2_4g_ul_pct":-25482.41,"o2_4g_tsr":-999.000,"o2_4g_tsr_pct":0.00,"ee_4g_dl":0.5,"ee_4g_dl_pct":1.00,"ee_4g_ul":0.0,"ee_4g_ul_pct":1.00,"ee_4g_tsr":0.600,"ee_4g_tsr_pct":0.20,"vodafone_4g_dl":-999.0,"vodafone_4g_dl_pct":-1878.56,"vodafone_4g_ul":-999.0,"vodafone_4g_ul_pct":-25482.41,"vodafone_4g_tsr":-999.000,"vodafone_4g_tsr_pct":0.00},
{"title":"Ye Olde Cheshire Cheese","latitude":51.514288,"longitude":-0.107202,"color":"#4066AD","photo":"cheese2.jpg","3_accessibility":0.929,"3_accessibility_pct":0.61,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":1.000,"vodafone_accessibility_pct":1.00,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":1.000,"vodafone_quality_pct":1.00,"3_3g_dl":1.2,"3_3g_dl_pct":0.14,"3_3g_ul":2.0,"3_3g_ul_pct":1.00,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":3.1,"o2_3g_dl_pct":0.37,"o2_3g_ul":1.6,"o2_3g_ul_pct":0.78,"o2_3g_tsr":0.423,"o2_3g_tsr_pct":0.10,"ee_3g_dl":8.4,"ee_3g_dl_pct":1.00,"ee_3g_ul":2.0,"ee_3g_ul_pct":0.95,"ee_3g_tsr":0.976,"ee_3g_tsr_pct":0.91,"vodafone_3g_dl":2.6,"vodafone_3g_dl_pct":0.30,"vodafone_3g_ul":1.6,"vodafone_3g_ul_pct":0.79,"vodafone_3g_tsr":0.974,"vodafone_3g_tsr_pct":0.90,"3_4g_dl":0.4,"3_4g_dl_pct":0.04,"3_4g_ul":4.7,"3_4g_ul_pct":0.46,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":2.8,"o2_4g_dl_pct":0.26,"o2_4g_ul":0.2,"o2_4g_ul_pct":0.02,"o2_4g_tsr":0.929,"o2_4g_tsr_pct":0.75,"ee_4g_dl":10.7,"ee_4g_dl_pct":1.00,"ee_4g_ul":10.2,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":-999.0,"vodafone_4g_dl_pct":-93.38,"vodafone_4g_ul":-999.0,"vodafone_4g_ul_pct":-98.11,"vodafone_4g_tsr":-999.000,"vodafone_4g_tsr_pct":0.00},
{"title":"The Fen","latitude":51.511559,"longitude":-0.079193,"color":"#D42684","photo":"fenchurch2.jpg","3_accessibility":1.000,"3_accessibility_pct":1.00,"ee_accessibility":1.000,"ee_accessibility_pct":1.00,"o2_accessibility":1.000,"o2_accessibility_pct":1.00,"vodafone_accessibility":0.909,"vodafone_accessibility_pct":0.53,"3_retainability":1.000,"3_retainability_pct":1.00,"ee_retainability":1.000,"ee_retainability_pct":1.00,"o2_retainability":1.000,"o2_retainability_pct":1.00,"vodafone_retainability":1.000,"vodafone_retainability_pct":1.00,"3_quality":1.000,"3_quality_pct":1.00,"ee_quality":1.000,"ee_quality_pct":1.00,"o2_quality":1.000,"o2_quality_pct":1.00,"vodafone_quality":0.938,"vodafone_quality_pct":0.65,"3_3g_dl":0.1,"3_3g_dl_pct":0.04,"3_3g_ul":0.3,"3_3g_ul_pct":0.21,"3_3g_tsr":1.000,"3_3g_tsr_pct":1.00,"o2_3g_dl":3.7,"o2_3g_dl_pct":1.00,"o2_3g_ul":0.9,"o2_3g_ul_pct":0.71,"o2_3g_tsr":0.979,"o2_3g_tsr_pct":0.92,"ee_3g_dl":0.6,"ee_3g_dl_pct":0.16,"ee_3g_ul":1.1,"ee_3g_ul_pct":0.88,"ee_3g_tsr":0.939,"ee_3g_tsr_pct":0.78,"vodafone_3g_dl":2.4,"vodafone_3g_dl_pct":0.64,"vodafone_3g_ul":1.3,"vodafone_3g_ul_pct":1.00,"vodafone_3g_tsr":1.000,"vodafone_3g_tsr_pct":1.00,"3_4g_dl":4.2,"3_4g_dl_pct":0.87,"3_4g_ul":2.0,"3_4g_ul_pct":0.19,"3_4g_tsr":1.000,"3_4g_tsr_pct":1.00,"o2_4g_dl":4.6,"o2_4g_dl_pct":0.94,"o2_4g_ul":4.6,"o2_4g_ul_pct":0.43,"o2_4g_tsr":1.000,"o2_4g_tsr_pct":1.00,"ee_4g_dl":4.9,"ee_4g_dl_pct":1.00,"ee_4g_ul":10.6,"ee_4g_ul_pct":1.00,"ee_4g_tsr":1.000,"ee_4g_tsr_pct":1.00,"vodafone_4g_dl":3.7,"vodafone_4g_dl_pct":0.76,"vodafone_4g_ul":4.6,"vodafone_4g_ul_pct":0.43,"vodafone_4g_tsr":1.000,"vodafone_4g_tsr_pct":1.00}];