<!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:
    '&copy; <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"
  }
]