<!doctype html>
<html>
<head>
<link rel="stylesheet" href="lib/style.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" >
</head>
<body>
<div id="map"></div>
<script src="lib/data.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Turf.js/5.1.6/turf.min.js" ></script>
<script src="lib/OpenStreetMapsHelper.js"></script>
<script src="lib/script.js"></script>
</body>
</html>
/* Add your styles here */
html, body {
height: 100%;
margin: 0;
}
#map {
width: 100%;
height:100%;
}
.leaflet-tooltip.my-labels {
background-color: transparent;
border: transparent;
box-shadow: none;
text-shadow: 2px 2px 5px white;
font-weight:bolder;
}
// Add your code here
var map = L.map('map').setView([48.48106, -123.3921], 13);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution:
'© <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
}).addTo(map);
var mapHelper = new OpenStreetMapsHelper(map);
console.clear();
function showMarkers() {
mapHelper.removeEntities('Vehicles:0', true);
var nPoints = 300 + Math.floor(Math.random() * 50 + 1);
let points = turf.randomPoint(nPoints, {
bbox: [-123.461867, 48.402811, -123.248321, 48.500989],
});
turf.featureEach(points, function (currentFeature) {
var coord = turf.getCoord(currentFeature);
let bearing = Math.floor(Math.random() * 360 + 1);
let vehicleBubble = mapHelper.createPushpin(
[coord[1], coord[0]],
mapHelper.vehiclePushpinOptions(bearing, 1),
{
mouseover: function (e) {
console.log('mouse over');
},
mouseout: function (e) {
console.log('mouse out');
},
}
);
mapHelper.addEntity(vehicleBubble, 'Vehicles:0', 9999);
});
setTimeout(showMarkers, 5000);
}
showMarkers();
// function showMarkers() {
// mapHelper.removeEntities('Vehicles:0', true);
// for (let i = 0; i < vehicleData.length; i++) {
// let bearing = Math.floor(Math.random() * 360 + 1);
// let dataItem = vehicleData[i];
// let vehicleBubble = mapHelper.createPushpin(
// [dataItem.lat, dataItem.lng],
// mapHelper.vehiclePushpinOptions(bearing, 1),
// {
// mouseover: function (e) {
// console.log('mouse over');
// },
// mouseout: function (e) {
// console.log('mouse out');
// },
// }
// );
// vehicleBubble.bindTooltip(dataItem.VehicleName, {
// direction: 'auto',
// permanent: true,
// className: "my-labels",
// offset: L.point(10, 15)
// });
// mapHelper.addEntity(vehicleBubble, 'Vehicles:0', 9999);
// }
// setTimeout(showMarkers, 5000);
// }
'use strict';
function OpenStreetMapsHelper(map) {
var _this = this;
this.mapLayers = [];
this.VehicleBubbleSvg = '\n\t\t<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\t\t<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \n\t\t width="{{SIZE}}" height="{{SIZE}}" id="svg2">\n\t\t <defs id="defs4">\t\t\t\n\t\t\t<radialGradient cx="75.625" cy="25" r="25" fx="75.625" fy="25" id="radialGradient3831" \n\t\t\t xlink:href="#linearGradient3825" gradientUnits="userSpaceOnUse" gradientTransform="translate(-50.625,0)" />\n\t\t </defs>\n\t\t <g transform="scale({{SCALE}})"> \n\t\t\t <g id="g" transform="rotate({{ROTATE}},25,25)">\n\t\t\t\t<path d="M 25,0 C 11.192881,0 0,11.192881 0,25 0,38.807119 11.192881,50 25,50 38.807119,50 50,38.807119 50,25 50,11.192881 38.807119,0 25,0 z m 0,6 C 35.49341,6 44,14.50659 44,25 44,35.49341 35.49341,44 25,44 14.50659,44 6,35.49341 6,25 6,14.50659 14.50659,6 25,6 z" id="path3769" style="fill:url(#radialGradient3831);fill-opacity:1;fill-rule:nonzero;stroke:none" />\n\t\t\t\t<path id="pointer" display="block" d="M 25,0.03125 19.65625,7.8125 C 21.34715,7.2865754 23.136039,7 25,7 c 1.863961,0 3.65285,0.2865754 5.34375,0.8125 L 25,0.03125 z" style="fill:#000000;fill-opacity:1;stroke:none" />\n\t\t\t\t<path id="internalCircle" d="m 46.669046,29.14035 a 19.091883,19.622211 0 1 1 -38.183765,0 19.091883,19.622211 0 1 1 38.183765,0 z" \n\t\t\t\t transform="matrix(0.95554973,0,0,0.92972412,-1.3513513,-2.0924866)" \n\t\t\t\t fill="{{COLOR}}" style="fill-opacity:0.5;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />\n\t\t\t </g>\n\t\t <image id="embedImg" display="block" xlink:href="{{ICONDATAURL}}" x="12" y="12" height="25px" width="25px"/>\n\t\t </g> \n\t\t</svg>\n\t\t'.trim();
this.defaultVehicleDataUrl =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wcRFQYXul2ragAAAZRJREFUSMftlc8rw2Ecx1/P98d+EWUXZTVrNQecFGscXGRYlIOWnF2UqPkTpJj4E5wc3FZIuUiSqd1IDlqKUnLRZu27Xw48a1iMbTfv03N5v97P836eT49IpgwAQpsHZ0exeCfAczLdyB/U1GBOAAz2uC7DC34vgJhdjgBE906ue6mhxgY6zoE+BYhSP0WFZ3LzBSCZMqy6pgKwOO0DYGqoC4BWe/nGHp4SAOwcXgCwsX0KQCabo8FqSgFoyZRhlYbQTD8Ac1N9FW1PBs8HvQCoigBgZesYyVU+myqFl1M574eA4HB31aV/ZhQDLCYNe7Ot6gB7sw2LSfsaoOtqzZ5OKUuhzvoP+FGibWS18F/Rd9JMupoBMDI5/SayiFl/GxLH6NqvQHf7SwCkM1ncExtIriKEyAsh8gBmXUtXu2PJkFzhGl835AlqWU3xBHW/A7ej5R7gKv7YXkuw5IpC4W0MnIFwNpcvqO8fRw7gdjekVQJzBsJZgFK/9H5XkfabJn6cA7/PEytd+32eiul+n+eLX65fAQUGc75Aq8MZAAAAAElFTkSuQmCC';
this.vehiclePushpinOptions = function (bearing, scale) {
let color = '#ffffff';
let iconDataUrl = _this.defaultVehicleDataUrl;
var actuSize = scale * 50;
var vehicleSvg = _this.VehicleBubbleSvg.replace('{{ROTATE}}', bearing)
.replace('{{COLOR}}', color)
.replace('{{SCALE}}', scale + '')
.replace('{{ICONDATAURL}}', iconDataUrl)
.replace(/{{SIZE}}/g, actuSize + '');
var iconUrl = 'data:image/svg+xml;base64,' + btoa(vehicleSvg);
let icon = L.divIcon({
iconAnchor: [Math.round(25 * scale), Math.round(25 * scale)],
html: `<img src='${iconUrl}'></img>`,
className: 'vehicle-pushpin'
});
return {
icon: icon,
zIndexOffset: 99999,
};
};
this.map = map;
}
OpenStreetMapsHelper.prototype.createPushpin = function (
location,
option,
handlers,
customerProperty
) {
var pin = L.marker(location, option);
if (handlers) {
for (var hName in handlers) {
if (typeof handlers[hName] === 'function') {
pin.on(hName, handlers[hName]);
}
}
}
if (customerProperty) {
pin['customerProperty'] = customerProperty;
}
return pin;
};
OpenStreetMapsHelper.prototype.addEntity = function (
entity,
layerName,
zIndex
) {
var foundLayer = this.mapLayers.filter(function (v) {
if (v.options.pane === layerName) return true;
});
if (foundLayer.length > 0) {
foundLayer[0].addLayer(entity);
if (!foundLayer[0].map) foundLayer[0].addTo(this.map);
return foundLayer[0];
} else {
var newLayerObj = { pane: layerName };
var newLayer = L.layerGroup([entity], newLayerObj);
if (isNaN(zIndex) == false) {
newLayer.setZIndex(zIndex);
}
this.mapLayers.push(newLayer);
newLayer.addTo(this.map);
return newLayer;
}
};
OpenStreetMapsHelper.prototype.removeEntities = function (layerName, useRegEx) {
if (useRegEx === void 0) {
useRegEx = false;
}
var OpenStreetMapLayer;
if (layerName) {
var regFilter = new RegExp(layerName);
var foundLayer = this.mapLayers.filter(function (v, i, self) {
if (useRegEx) {
return regFilter.test(v.options.pane);
} else if (v.options.pane === layerName) return true;
});
if (foundLayer.length > 0) {
for (var flx = 0; flx < foundLayer.length; flx++) {
OpenStreetMapLayer = foundLayer[flx];
OpenStreetMapLayer.clearLayers();
this.map.removeLayer(OpenStreetMapLayer);
}
} else {
return false;
}
} else {
this.map.eachLayer(function (layer) {
if (!(layer instanceof L.TileLayer)) {
layer.remove();
}
});
}
};
let vehicleData = [
{
"VehicleName": "0020",
"lat": 48.48106,
"lng": -123.39212,
"bearing": 0
},
{
"VehicleName": "0021",
"lat": 48.48124,
"lng": -123.3923,
"bearing": 0
},
{
"VehicleName": "0022",
"lat": 48.48121,
"lng": -123.39217,
"bearing": 0
},
{
"VehicleName": "0023",
"lat": 48.48122,
"lng": -123.39214,
"bearing": 0
},
{
"VehicleName": "0024",
"lat": 48.48118,
"lng": -123.39209,
"bearing": 0
},
{
"VehicleName": "0025",
"lat": 48.48111,
"lng": -123.3923,
"bearing": 0
},
{
"VehicleName": "0026",
"lat": 48.48104,
"lng": -123.39232,
"bearing": "0"
},
{
"VehicleName": "0027",
"lat": 48.48097,
"lng": -123.39216,
"bearing": 0
},
{
"VehicleName": "1031",
"lat": 0,
"lng": 0,
"bearing": 0
},
{
"VehicleName": "1152",
"lat": 48.4455367,
"lng": -123.5175797,
"bearing": 0
},
{
"VehicleName": "1153",
"lat": 48.4457565,
"lng": -123.3770578,
"bearing": "307"
},
{
"VehicleName": "1154",
"lat": 48.4541147,
"lng": -123.517444,
"bearing": 0
},
{
"VehicleName": "1155",
"lat": 48.4450942,
"lng": -123.5196597,
"bearing": 0
},
{
"VehicleName": "1156",
"lat": 48.4455305,
"lng": -123.5175745,
"bearing": 0
},
{
"VehicleName": "1157",
"lat": 48.4401503,
"lng": -123.3689765,
"bearing": 0
},
{
"VehicleName": "1158",
"lat": 48.445194,
"lng": -123.5186917,
"bearing": 0
},
{
"VehicleName": "1159",
"lat": 48.4400332,
"lng": -123.368801,
"bearing": 0
},
{
"VehicleName": "1160",
"lat": 48.4452882,
"lng": -123.5192495,
"bearing": 0
},
{
"VehicleName": "1161",
"lat": 48.4660887,
"lng": -123.3090572,
"bearing": "46"
},
{
"VehicleName": "1162",
"lat": 48.4452812,
"lng": -123.5183243,
"bearing": 0
},
{
"VehicleName": "1163",
"lat": 49.1765172,
"lng": -122.710789,
"bearing": 0
},
{
"VehicleName": "1164",
"lat": 48.4457205,
"lng": -123.5189558,
"bearing": 0
},
{
"VehicleName": "1165",
"lat": 48.4453402,
"lng": -123.517876,
"bearing": 0
},
{
"VehicleName": "1166",
"lat": 48.4452937,
"lng": -123.5188778,
"bearing": 0
},
{
"VehicleName": "1167",
"lat": 48.4453303,
"lng": -123.5184767,
"bearing": 0
},
{
"VehicleName": "1168",
"lat": 48.4429278,
"lng": -123.3219372,
"bearing": "181"
},
{
"VehicleName": "1169",
"lat": 48.4453382,
"lng": -123.5196482,
"bearing": 0
},
{
"VehicleName": "1170",
"lat": 48.4409632,
"lng": -123.3124408,
"bearing": 0
},
{
"VehicleName": "1171",
"lat": 48.445345,
"lng": -123.519315,
"bearing": 0
},
{
"VehicleName": "1172",
"lat": 48.4452622,
"lng": -123.5185573,
"bearing": 0
},
{
"VehicleName": "1173",
"lat": 48.4452433,
"lng": -123.5194355,
"bearing": 0
},
{
"VehicleName": "1174",
"lat": 48.445375,
"lng": -123.5188007,
"bearing": 0
},
{
"VehicleName": "1175",
"lat": 48.4453855,
"lng": -123.5193972,
"bearing": 0
},
{
"VehicleName": "1176",
"lat": 48.4399793,
"lng": -123.3685378,
"bearing": 0
},
{
"VehicleName": "1177",
"lat": 48.4453858,
"lng": -123.518873,
"bearing": 0
},
{
"VehicleName": "1178",
"lat": 48.4453615,
"lng": -123.5186222,
"bearing": 0
},
{
"VehicleName": "1179",
"lat": 48.4450868,
"lng": -123.5195902,
"bearing": 0
},
{
"VehicleName": "1180",
"lat": 48.4454592,
"lng": -123.5175737,
"bearing": 0
},
{
"VehicleName": "1181",
"lat": 48.4455778,
"lng": -123.5172443,
"bearing": 0
},
{
"VehicleName": "1182",
"lat": 48.445277,
"lng": -123.5189472,
"bearing": 0
},
{
"VehicleName": "1183",
"lat": 48.4453617,
"lng": -123.5190478,
"bearing": 0
},
{
"VehicleName": "1184",
"lat": 48.4217097,
"lng": -123.4100727,
"bearing": "280"
},
{
"VehicleName": "1185",
"lat": 48.4453268,
"lng": -123.5186883,
"bearing": 0
},
{
"VehicleName": "1186",
"lat": 48.445318,
"lng": -123.5185483,
"bearing": 0
},
{
"VehicleName": "223",
"lat": 48.4453955,
"lng": -123.5171602,
"bearing": 0
},
{
"VehicleName": "228",
"lat": 48.4454985,
"lng": -123.517328,
"bearing": 0
},
{
"VehicleName": "4062",
"lat": 48.4455725,
"lng": -123.5191043,
"bearing": 0
},
{
"VehicleName": "4063",
"lat": 48.4397913,
"lng": -123.3702293,
"bearing": "142"
},
{
"VehicleName": "4064",
"lat": 48.4359387,
"lng": -123.368507,
"bearing": "276"
},
{
"VehicleName": "4065",
"lat": 48.4451838,
"lng": -123.518954,
"bearing": 0
},
{
"VehicleName": "4066",
"lat": 48.4457215,
"lng": -123.5192522,
"bearing": 0
},
{
"VehicleName": "4067",
"lat": 48.4134437,
"lng": -123.3570877,
"bearing": "199"
},
{
"VehicleName": "4071",
"lat": 48.468614,
"lng": -123.3330898,
"bearing": "89"
},
{
"VehicleName": "4072",
"lat": 48.4405757,
"lng": -123.3684472,
"bearing": 0
},
{
"VehicleName": "4200",
"lat": 48.6553692,
"lng": -123.4163777,
"bearing": "271"
},
{
"VehicleName": "4201",
"lat": 48.4411395,
"lng": -123.5293465,
"bearing": "225"
},
{
"VehicleName": "4202",
"lat": 48.4487508,
"lng": -123.4988668,
"bearing": "122"
},
{
"VehicleName": "4203",
"lat": 48.4200857,
"lng": -123.4980625,
"bearing": "108"
},
{
"VehicleName": "4204",
"lat": 48.4686692,
"lng": -123.3207153,
"bearing": "268"
},
{
"VehicleName": "4205",
"lat": 48.4456267,
"lng": -123.5193652,
"bearing": 0
},
{
"VehicleName": "4206",
"lat": 48.4457932,
"lng": -123.5188873,
"bearing": 0
},
{
"VehicleName": "4207",
"lat": 48.4455557,
"lng": -123.5175782,
"bearing": 0
},
{
"VehicleName": "4208",
"lat": 48.4451073,
"lng": -123.5168497,
"bearing": 0
},
{
"VehicleName": "4209",
"lat": 48.4457865,
"lng": -123.5190348,
"bearing": 0
},
{
"VehicleName": "4210",
"lat": 48.4456228,
"lng": -123.5191155,
"bearing": 0
},
{
"VehicleName": "4211",
"lat": 48.4423785,
"lng": -123.504764,
"bearing": "77"
},
{
"VehicleName": "4212",
"lat": 48.445646,
"lng": -123.5192973,
"bearing": 0
},
{
"VehicleName": "4213",
"lat": 48.4455883,
"lng": -123.5174647,
"bearing": 0
},
{
"VehicleName": "4214",
"lat": 48.4456457,
"lng": -123.5194122,
"bearing": 0
},
{
"VehicleName": "4215",
"lat": 48.445558,
"lng": -123.517658,
"bearing": 0
},
{
"VehicleName": "4216",
"lat": 48.6304465,
"lng": -123.413086,
"bearing": 0
},
{
"VehicleName": "4217",
"lat": 48.4455412,
"lng": -123.5046708,
"bearing": "262"
},
{
"VehicleName": "4218",
"lat": 48.4454465,
"lng": -123.505168,
"bearing": "261"
},
{
"VehicleName": "4219",
"lat": 48.445656,
"lng": -123.5194783,
"bearing": "326"
},
{
"VehicleName": "4220",
"lat": 48.4424598,
"lng": -123.4694723,
"bearing": "208"
},
{
"VehicleName": "4221",
"lat": 48.4454122,
"lng": -123.5171887,
"bearing": 0
},
{
"VehicleName": "4222",
"lat": 48.4745013,
"lng": -123.5164538,
"bearing": "45"
},
{
"VehicleName": "4223",
"lat": 48.6501873,
"lng": -123.400501,
"bearing": "0"
},
{
"VehicleName": "4224",
"lat": 48.4453515,
"lng": -123.5198547,
"bearing": 0
},
{
"VehicleName": "4456",
"lat": 48.4399423,
"lng": -123.3694743,
"bearing": 0
},
{
"VehicleName": "4457",
"lat": 48.4399363,
"lng": -123.369294,
"bearing": 0
},
{
"VehicleName": "4458",
"lat": 48.4399545,
"lng": -123.3693435,
"bearing": 0
},
{
"VehicleName": "4459",
"lat": 48.42316,
"lng": -123.3540462,
"bearing": "10"
},
{
"VehicleName": "4460",
"lat": 48.4406568,
"lng": -123.3685105,
"bearing": 0
},
{
"VehicleName": "4461",
"lat": 48.4408478,
"lng": -123.3686592,
"bearing": 0
},
{
"VehicleName": "4462",
"lat": 48.4352222,
"lng": -123.3573395,
"bearing": "93"
},
{
"VehicleName": "4463",
"lat": 48.499027,
"lng": -123.3888005,
"bearing": "96"
},
{
"VehicleName": "4464",
"lat": 48.4408103,
"lng": -123.3694672,
"bearing": 0
},
{
"VehicleName": "6001",
"lat": 48.4572782,
"lng": -123.3002882,
"bearing": "9"
},
{
"VehicleName": "6005",
"lat": 48.438118,
"lng": -123.3080873,
"bearing": "203"
},
{
"VehicleName": "6101",
"lat": 48.44487,
"lng": -123.5183,
"bearing": "0"
},
{
"VehicleName": "8107",
"lat": 48.4453655,
"lng": -123.517072,
"bearing": 0
},
{
"VehicleName": "8112",
"lat": 48.4449902,
"lng": -123.5172202,
"bearing": 0
},
{
"VehicleName": "85",
"lat": 48.44523,
"lng": -123.51672,
"bearing": "0"
},
{
"VehicleName": "86",
"lat": 48.44012,
"lng": -123.3697,
"bearing": 0
},
{
"VehicleName": "9001",
"lat": 48.4456373,
"lng": -123.5192413,
"bearing": "274"
},
{
"VehicleName": "9002",
"lat": 48.4452915,
"lng": -123.5195192,
"bearing": 0
},
{
"VehicleName": "9003",
"lat": 48.4456287,
"lng": -123.5189913,
"bearing": 0
},
{
"VehicleName": "9004",
"lat": 48.4402532,
"lng": -123.3704622,
"bearing": 0
},
{
"VehicleName": "9005",
"lat": 48.4451735,
"lng": -123.5191088,
"bearing": 0
},
{
"VehicleName": "9006",
"lat": 48.4455547,
"lng": -123.5182297,
"bearing": 0
},
{
"VehicleName": "9007",
"lat": 48.4406713,
"lng": -123.369695,
"bearing": 0
},
{
"VehicleName": "9008",
"lat": 48.4235422,
"lng": -123.3657053,
"bearing": "190"
},
{
"VehicleName": "9009",
"lat": 48.4407807,
"lng": -123.3690828,
"bearing": 0
},
{
"VehicleName": "9010",
"lat": 48.4391572,
"lng": -123.3675182,
"bearing": "160"
},
{
"VehicleName": "9021",
"lat": 48.42779,
"lng": -123.364478,
"bearing": "12"
},
{
"VehicleName": "9022",
"lat": 48.4449428,
"lng": -123.5166907,
"bearing": 0
},
{
"VehicleName": "9023",
"lat": 48.4456248,
"lng": -123.5187853,
"bearing": 0
},
{
"VehicleName": "9024",
"lat": 48.4455915,
"lng": -123.5186138,
"bearing": 0
},
{
"VehicleName": "9025",
"lat": 48.4455972,
"lng": -123.5186937,
"bearing": 0
},
{
"VehicleName": "9026",
"lat": 48.4656,
"lng": -123.3093508,
"bearing": "207"
},
{
"VehicleName": "9027",
"lat": 48.4456832,
"lng": -123.5188572,
"bearing": 0
},
{
"VehicleName": "9028",
"lat": 48.4640432,
"lng": -123.4200183,
"bearing": "86"
},
{
"VehicleName": "9029",
"lat": 48.4449108,
"lng": -123.5192073,
"bearing": "0"
},
{
"VehicleName": "9030",
"lat": 48.4401297,
"lng": -123.3680238,
"bearing": "160"
},
{
"VehicleName": "9031",
"lat": 48.4261018,
"lng": -123.3649212,
"bearing": "6"
},
{
"VehicleName": "9032",
"lat": 48.440823,
"lng": -123.3694215,
"bearing": 0
},
{
"VehicleName": "9033",
"lat": 48.4403738,
"lng": -123.3695503,
"bearing": 0
},
{
"VehicleName": "9034",
"lat": 48.4455328,
"lng": -123.5174173,
"bearing": 0
},
{
"VehicleName": "9035",
"lat": 48.4401755,
"lng": -123.3705922,
"bearing": 0
},
{
"VehicleName": "9036",
"lat": 48.439998,
"lng": -123.3703522,
"bearing": 0
},
{
"VehicleName": "9037",
"lat": 48.4452825,
"lng": -123.5191055,
"bearing": 0
},
{
"VehicleName": "9038",
"lat": 48.4478868,
"lng": -123.3723363,
"bearing": "337"
},
{
"VehicleName": "9039",
"lat": 48.458834,
"lng": -123.3687295,
"bearing": "3"
},
{
"VehicleName": "9041",
"lat": 48.4197457,
"lng": -123.3689177,
"bearing": "180"
},
{
"VehicleName": "9042",
"lat": 48.4403565,
"lng": -123.3691932,
"bearing": 0
},
{
"VehicleName": "9043",
"lat": 48.5686348,
"lng": -123.3989073,
"bearing": "3"
},
{
"VehicleName": "9044",
"lat": 48.538244,
"lng": -123.3895645,
"bearing": "174"
},
{
"VehicleName": "9045",
"lat": 48.4451898,
"lng": -123.5197417,
"bearing": 0
},
{
"VehicleName": "9046",
"lat": 48.4665085,
"lng": -123.3088427,
"bearing": "214"
},
{
"VehicleName": "9047",
"lat": 48.688093,
"lng": -123.4111342,
"bearing": "354"
},
{
"VehicleName": "9048",
"lat": 48.4452393,
"lng": -123.518817,
"bearing": 0
},
{
"VehicleName": "9049",
"lat": 48.445075,
"lng": -123.517446,
"bearing": 0
},
{
"VehicleName": "9059",
"lat": 0,
"lng": 0,
"bearing": 0
},
{
"VehicleName": "9060",
"lat": 0,
"lng": 0,
"bearing": 0
},
{
"VehicleName": "9101",
"lat": 48.4216862,
"lng": -123.3639662,
"bearing": "141"
},
{
"VehicleName": "9105",
"lat": 48.4407508,
"lng": -123.3698165,
"bearing": 0
},
{
"VehicleName": "9106",
"lat": 48.4219945,
"lng": -123.3660328,
"bearing": "12"
},
{
"VehicleName": "9308",
"lat": 48.4661633,
"lng": -123.4348368,
"bearing": "304"
},
{
"VehicleName": "9331",
"lat": 48.4257377,
"lng": -123.3649798,
"bearing": "10"
},
{
"VehicleName": "9332",
"lat": 48.4623955,
"lng": -123.3081438,
"bearing": "14"
},
{
"VehicleName": "9333",
"lat": 48.4299028,
"lng": -123.4094343,
"bearing": "101"
},
{
"VehicleName": "9334",
"lat": 48.4264293,
"lng": -123.3657135,
"bearing": "279"
},
{
"VehicleName": "9335",
"lat": 48.4714452,
"lng": -123.3510468,
"bearing": "347"
},
{
"VehicleName": "9339",
"lat": 48.4407327,
"lng": -123.3697843,
"bearing": 0
},
{
"VehicleName": "9342",
"lat": 48.49713,
"lng": -123.3894925,
"bearing": "201"
},
{
"VehicleName": "9345",
"lat": 48.4452965,
"lng": -123.5193077,
"bearing": 0
},
{
"VehicleName": "9347",
"lat": 48.4401802,
"lng": -123.3704578,
"bearing": 0
},
{
"VehicleName": "9354",
"lat": 48.4473362,
"lng": -123.3355155,
"bearing": "138"
},
{
"VehicleName": "9355",
"lat": 48.4452972,
"lng": -123.5190295,
"bearing": 0
},
{
"VehicleName": "9356",
"lat": 48.4452718,
"lng": -123.5195022,
"bearing": 0
},
{
"VehicleName": "9357",
"lat": 48.4407897,
"lng": -123.369501,
"bearing": 0
},
{
"VehicleName": "9358",
"lat": 48.4215633,
"lng": -123.3638513,
"bearing": "146"
},
{
"VehicleName": "9359",
"lat": 48.4510117,
"lng": -123.3745648,
"bearing": "159"
},
{
"VehicleName": "9360",
"lat": 48.5725395,
"lng": -123.4424245,
"bearing": "152"
},
{
"VehicleName": "9361",
"lat": 48.4407443,
"lng": -123.3685272,
"bearing": 0
},
{
"VehicleName": "9362",
"lat": 48.4407283,
"lng": -123.3698595,
"bearing": 0
},
{
"VehicleName": "9363",
"lat": 48.4405322,
"lng": -123.3684848,
"bearing": 0
},
{
"VehicleName": "9364",
"lat": 48.4252637,
"lng": -123.3651857,
"bearing": "180"
},
{
"VehicleName": "9365",
"lat": 48.4598028,
"lng": -123.394405,
"bearing": "183"
},
{
"VehicleName": "9366",
"lat": 48.4327678,
"lng": -123.322293,
"bearing": "4"
},
{
"VehicleName": "9367",
"lat": 48.4400173,
"lng": -123.370551,
"bearing": 0
},
{
"VehicleName": "9368",
"lat": 48.4511075,
"lng": -123.3331245,
"bearing": "1"
},
{
"VehicleName": "9369",
"lat": 48.4308008,
"lng": -123.3907227,
"bearing": "102"
},
{
"VehicleName": "9370",
"lat": 48.4450528,
"lng": -123.5186832,
"bearing": 0
},
{
"VehicleName": "9371",
"lat": 48.4658093,
"lng": -123.3083802,
"bearing": "48"
},
{
"VehicleName": "9372",
"lat": 48.4582403,
"lng": -123.332922,
"bearing": "3"
},
{
"VehicleName": "9373",
"lat": 48.4398452,
"lng": -123.3710142,
"bearing": 0
},
{
"VehicleName": "9374",
"lat": 48.4398217,
"lng": -123.37019,
"bearing": "144"
},
{
"VehicleName": "9375",
"lat": 48.489804,
"lng": -123.3101248,
"bearing": "295"
},
{
"VehicleName": "9376",
"lat": 48.4453163,
"lng": -123.5187258,
"bearing": 0
},
{
"VehicleName": "9377",
"lat": 48.4453688,
"lng": -123.5191617,
"bearing": 0
},
{
"VehicleName": "9378",
"lat": 48.4456705,
"lng": -123.518934,
"bearing": 0
},
{
"VehicleName": "9379",
"lat": 48.4455655,
"lng": -123.5184738,
"bearing": 0
},
{
"VehicleName": "9380",
"lat": 48.4403493,
"lng": -123.3695412,
"bearing": "0"
},
{
"VehicleName": "9381",
"lat": 48.4408232,
"lng": -123.3686327,
"bearing": 0
},
{
"VehicleName": "9382",
"lat": 48.4306705,
"lng": -123.3586102,
"bearing": "2"
},
{
"VehicleName": "9383",
"lat": 48.4406053,
"lng": -123.368469,
"bearing": 0
},
{
"VehicleName": "9384",
"lat": 48.445675,
"lng": -123.5188075,
"bearing": 0
},
{
"VehicleName": "9385",
"lat": 48.4451565,
"lng": -123.5177493,
"bearing": 0
},
{
"VehicleName": "9386",
"lat": 48.4408868,
"lng": -123.3690458,
"bearing": 0
},
{
"VehicleName": "9387",
"lat": 48.4454157,
"lng": -123.5190617,
"bearing": "229"
},
{
"VehicleName": "9388",
"lat": 48.4404407,
"lng": -123.3973185,
"bearing": "104"
},
{
"VehicleName": "9389",
"lat": 48.440422,
"lng": -123.3702303,
"bearing": 0
},
{
"VehicleName": "9390",
"lat": 48.4455632,
"lng": -123.5185632,
"bearing": 0
},
{
"VehicleName": "9391",
"lat": 48.4534012,
"lng": -123.3331527,
"bearing": "180"
},
{
"VehicleName": "9392",
"lat": 48.4279302,
"lng": -123.426704,
"bearing": "255"
},
{
"VehicleName": "9393",
"lat": 48.4455187,
"lng": -123.3711487,
"bearing": "158"
},
{
"VehicleName": "9394",
"lat": 48.4453398,
"lng": -123.5182945,
"bearing": 0
},
{
"VehicleName": "9395",
"lat": 48.4450762,
"lng": -123.5195587,
"bearing": 0
},
{
"VehicleName": "9396",
"lat": 48.4719013,
"lng": -123.3506333,
"bearing": "82"
},
{
"VehicleName": "9397",
"lat": 48.4538425,
"lng": -123.3927913,
"bearing": "326"
},
{
"VehicleName": "9398",
"lat": 48.4407507,
"lng": -123.369656,
"bearing": 0
},
{
"VehicleName": "9399",
"lat": 48.446402,
"lng": -123.360178,
"bearing": "79"
},
{
"VehicleName": "9403",
"lat": 48.4390247,
"lng": -123.3628785,
"bearing": "259"
},
{
"VehicleName": "9404",
"lat": 48.419974,
"lng": -123.36058,
"bearing": "147"
},
{
"VehicleName": "9405",
"lat": 48.4659472,
"lng": -123.3092103,
"bearing": "46"
},
{
"VehicleName": "9406",
"lat": 48.4270605,
"lng": -123.3646983,
"bearing": "12"
}
]