Improved www.ttss.krakow.pl
Jacek Kowalski
2017-05-14 4d882e6d16036c99055cfb8df0bf8c25bcbb8d8c
Change alert view and add top menu
4 files added
5 files modified
1818 ■■■■■ changed files
lang_en.js 3 ●●●●● patch | view | raw | blame | history
lang_pl.js 3 ●●●●● patch | view | raw | blame | history
map.css 109 ●●●●● patch | view | raw | blame | history
map.html 51 ●●●●● patch | view | raw | blame | history
map.js 37 ●●●●● patch | view | raw | blame | history
map_filters.js 6 ●●●●● patch | view | raw | blame | history
mock/tripPassages.json 98 ●●●●● patch | view | raw | blame | history
mock/vehicle.json 1510 ●●●●● patch | view | raw | blame | history
mock/vehicles.json 1 ●●●● patch | view | raw | blame | history
lang_en.js
@@ -1,9 +1,12 @@
var lang = {
    page_name: 'TTSS Kraków',
    index: 'Departures',
    page_title: 'TTSS Krak\u00F3w - Real-time tram departures',
    page_title_stop_name: 'TTSS Krak\u00F3w - $stop - Real-time tram departures',
    
    map: 'Map',
    map_title: 'TTSS Kraków - Tram map',
    
    jquery_not_loaded: 'Required JavaScript jQuery library failed to load. You may try refreshing the page.',
    enter_stop_name_to_begin: 'Enter the stop name to begin.',
lang_pl.js
@@ -1,9 +1,12 @@
var lang = {
    page_name: 'TTSS Kraków',
    index: 'Odjazdy',
    page_title: 'TTSS Krak\u00F3w - Odjazdy tramwajów na żywo',
    page_title_stop_name: 'TTSS Krak\u00F3w - $stop - Odjazdy tramwajów na żywo',
    
    map: 'Mapa',
    map_title: 'TTSS Kraków - Mapa tramwajów',
    
    jquery_not_loaded: 'Wymagana biblioteka jQuery nie została poprawnie załadowana. Spróbuj odświeżyć stronę.',
    enter_stop_name_to_begin: 'Zacznij wpisywać nazwę przystanku.',
map.css
@@ -1,34 +1,76 @@
html, body, #map {
html, body, #map, #header {
    margin: 0;
    font-family: sans-serif;
    padding: 0;
    font: 14px sans-serif;
    overflow: hidden;
}
#map {
#header {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2em;
    background: #f8f8f8;
    border-bottom: 1px solid #999;
}
#header ul {
    display: table;
    padding: 0;
    margin: 0;
    width: 100%;
}
#header ul li {
    display: table-cell;
    list-style: none;
    white-space: nowrap;
    vertical-align: top;
}
#header ul li:last-child {
    width: 100%;
    white-space: inherit;
    text-align: right;
}
#header ul li > * {
    line-height: 1em;
    display: inline-block;
    padding: 0.5em;
}
#alert {
    margin-left: 5px;
    transition: background-color .4s;
}
.error {
    background-color: red;
    color: white;
    font-weight: bold;
}
#map {
    position: absolute;
    top: 29px;
    left: 0;
    right: 0;
    bottom: 0;
}
#map .ol-attribution {
    left: 0;
    right: auto;
    text-align: left;
}
#popup {
#panel {
    color: black;
    background: white;
    padding: 5px;
    border-left: 1px solid black;
    border-left: 1px solid #999;
    font-size: 14px;
    
    position: absolute;
    width: 350px;
    right: -365px;
    top: 0;
    top: 29px;
    bottom: 0;
    
    transition: right .4s, width .4s;
@@ -38,70 +80,65 @@
    overflow-y: auto;
}
#popup.show {
#panel.show {
    right: 0;
}
@media (max-width: 600px) {
    #popup {
    #panel {
        width: 80%;
        right: -100%;
    }
    
    #popup.show {
    #panel.show {
        right: 0%;
    }
}
#popup .close {
    float: right;
    cursor: pointer;
    font-size: 20px;
}
#popup .type {
#panel .type {
    padding-bottom: 0;
    color: #444;
    font-size: 80%;
}
#popup p {
#panel p {
    margin: 0;
    padding: 5px;
}
#popup .name {
#panel .name {
    font-weight: bold;
}
#popup .vehicleInfo {
#panel .vehicleInfo {
    font-size: 21px;
    margin: -4px 0 -5px;
}
#popup table {
#panel table {
    margin-top: 3px;
    border-top: 1px solid gray;
    width: 100%;
    border-collapse: collapse;
}
#popup table th {
#panel table th {
    text-align: left;
    border-bottom: 1px solid #999;
    padding-top: 5px;
}
#popup table td {
#panel table td {
    vertical-align: top;
}
#popup .active {
#panel .active {
    background: #f5f5f5;
    color: gray;
}
#popup .success {
#panel .success {
    background: #dff0d8;
}
#popup .warning {
#panel .warning {
    background: #fcf8e3;
}
#popup .danger {
#panel .danger {
    background: #f2dede;
}
#popup table .vehicleInfo {
#panel table .vehicleInfo {
    float: right;
}
@@ -113,18 +150,12 @@
    background-color: rgba(255,255,255,.6);
}
#fail, #popup .error {
    background: red;
    color: white;
    font-weight: bold;
    padding: 5px;
}
#fail {
    top: -10em;
    right: 0.5em;
}
.ol-zoom {
    top: 2.2em;
.close {
    float: right;
    cursor: pointer;
    font-size: 20px;
    margin: 0;
    padding: 3px;
}
a {
map.html
@@ -1,25 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<title>TTSS Kraków - Mapa</title>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" />
<link rel="manifest" href="map.manifest" />
<link rel="stylesheet" href="https://openlayers.org/en/v4.1.0/css/ol.css" type="text/css" />
<link rel="stylesheet" href="map.css" type="text/css" />
</head>
<body>
<div id="map">
<div id="title" class="ol-unselectable ol-control"><a href="/">TTSS Kraków</a></div>
<div id="fail" class="ol-unselectable ol-control"></div>
</div>
<div id="popup"></div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha384-3ceskX3iaEnIogmQchP8opvBy3Mi7Ce34nWjpBIwVTHfGYWQS9jwHDVRnpKKHJg7" crossorigin="anonymous"></script>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList"></script>
<script src="https://openlayers.org/en/v4.1.0/build/ol.js" integrity="sha384-FkrvSU9IkctjoF6eTvw82jZvg4Rn04zw5X2nCQnYF+vT8IbAY+DJ23IIoaVDtiMe" crossorigin="anonymous"></script>
<script tyle="text/javascript" src="lang_pl.js" id="lang_script"></script>
<script tyle="text/javascript" src="common.js"></script>
<script tyle="text/javascript" src="map.js"></script>
<script tyle="text/javascript" src="serviceworker-install.js"></script>
</body>
    <head>
        <title>TTSS Kraków - Mapa tramwajów</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" />
        <link rel="manifest" href="map.manifest" />
        <link rel="stylesheet" href="https://openlayers.org/en/v4.1.0/css/ol.css" type="text/css" />
        <link rel="stylesheet" href="map.css" type="text/css" />
    </head>
    <body>
        <div id="header">
            <ul>
                <li><a href="/map.html" data-translate="page_name">TTSS Kraków</a></li>
                <li><a href="/" data-translate="index">Odjazdy</a></li>
                <li><span id="alert">Ładowanie, ładowanie, ładowanie, ładowanie...</span></li>
            </ul>
        </div>
        <div id="map"></div>
        <div id="panel"></div>
        <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha384-3ceskX3iaEnIogmQchP8opvBy3Mi7Ce34nWjpBIwVTHfGYWQS9jwHDVRnpKKHJg7" crossorigin="anonymous"></script>
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList"></script>
        <script src="https://openlayers.org/en/v4.1.0/build/ol.js" integrity="sha384-FkrvSU9IkctjoF6eTvw82jZvg4Rn04zw5X2nCQnYF+vT8IbAY+DJ23IIoaVDtiMe" crossorigin="anonymous"></script>
        <script tyle="text/javascript" src="lang_pl.js" id="lang_script"></script>
        <script tyle="text/javascript" src="common.js"></script>
        <script tyle="text/javascript" src="map.js"></script>
        <script tyle="text/javascript" src="serviceworker-install.js"></script>
    </body>
</html>
map.js
@@ -27,7 +27,7 @@
var ignore_hashchange = false;
var Panel = {
    element: document.getElementById('popup'),
    element: document.getElementById('panel'),
    closeCallback: undefined,
    
    callCloseCallback: function() {
@@ -63,22 +63,16 @@
};
var Alert = {
    element: document.getElementById('fail'),
    action: undefined,
    element: document.getElementById('alert'),
    
    fail: function(message, action) {
        if(this.action) {
            this.element.removeEventListener('click', this.action);
            this.action = undefined;
        }
    show: function(message) {
        setText(this.element, message);
        this.element.style.top = '0.5em';
        if(action) {
            this.action = action;
            this.element.addEventListener('click', action);
        }
        this.element.className = '';
    },
    fail: function(message) {
        this.show(message);
        this.element.className = 'error';
    },
};
@@ -602,7 +596,7 @@
function init() {
    if(!window.jQuery) {
        Alert.fail(lang.jquery_not_loaded);
        Alert.show(lang.jquery_not_loaded);
        return;
    }
    
@@ -667,14 +661,7 @@
            attributionOptions: ({
                collapsible: false,
            })
        }).extend([
            new ol.control.Control({
                element: document.getElementById('title'),
            }),
            new ol.control.Control({
                element: Alert.element,
            })
        ]),
        }),
        loadTilesWhileAnimating: true,
    });
    map_sphere = new ol.Sphere(6378137);
@@ -771,7 +758,7 @@
        if(vehicles_xhr) vehicles_xhr.abort();
        if(vehicles_timer) clearTimeout(vehicles_timer);
          
        Alert.fail(lang.error_refresh);
        Alert.show(lang.error_refresh);
    }, 1800000);
}
map_filters.js
New file
@@ -0,0 +1,6 @@
 var filters = {
     list: [],
 };
mock/tripPassages.json
New file
@@ -0,0 +1,98 @@
{
  "actual": [
    {
      "actualTime": "00:19",
      "status": "PREDICTED",
      "stop": {
        "id": "6350927454370005272",
        "name": "Smolki",
        "shortName": "572"
      },
      "stop_seq_num": "15"
    },
    {
      "actualTime": "00:21",
      "status": "PREDICTED",
      "stop": {
        "id": "6350927454370005282",
        "name": "Rondo Matecznego",
        "shortName": "610"
      },
      "stop_seq_num": "16"
    },
    {
      "actualTime": "00:22",
      "status": "PREDICTED",
      "stop": {
        "id": "6350927454370005283",
        "name": "Rzemieślnicza",
        "shortName": "611"
      },
      "stop_seq_num": "17"
    },
    {
      "actualTime": "00:24",
      "status": "PREDICTED",
      "stop": {
        "id": "6350927454370005306",
        "name": "Łagiewniki",
        "shortName": "922"
      },
      "stop_seq_num": "18"
    },
    {
      "actualTime": "00:27",
      "status": "PREDICTED",
      "stop": {
        "id": "6350927454370005286",
        "name": "PT",
        "shortName": "614"
      },
      "stop_seq_num": "19"
    }
  ],
  "directionText": "Zajezdnia Podgórze",
  "old": [
    {
      "plannedTime": "00:15",
      "status": "DEPARTED",
      "stop": {
        "id": "6350927454370005331",
        "name": "Cmentarz Podgórski",
        "shortName": "621"
      },
      "stop_seq_num": "11"
    },
    {
      "actualTime": "00:16",
      "status": "DEPARTED",
      "stop": {
        "id": "6350927454370005329",
        "name": "Powstańców Wielkopolskich",
        "shortName": "568"
      },
      "stop_seq_num": "12"
    },
    {
      "actualTime": "00:17",
      "status": "DEPARTED",
      "stop": {
        "id": "6350927454370005330",
        "name": "Limanowskiego",
        "shortName": "569"
      },
      "stop_seq_num": "13"
    },
    {
      "actualTime": "00:18",
      "status": "DEPARTED",
      "stop": {
        "id": "6350927454370005271",
        "name": "Korona",
        "shortName": "571"
      },
      "stop_seq_num": "14"
    }
  ],
  "routeName": "9"
}
mock/vehicle.json
New file
@@ -0,0 +1,1510 @@
{"paths": [{
  "color": "#f89f05",
  "wayPoints": [
    {
      "lat": 180048935,
      "lon": 71821681,
      "seq": "1"
    },
    {
      "lat": 180046991,
      "lon": 71830706,
      "seq": "2"
    },
    {
      "lat": 180045158,
      "lon": 71839253,
      "seq": "3"
    },
    {
      "lat": 180044867,
      "lon": 71840869,
      "seq": "4"
    },
    {
      "lat": 180044698,
      "lon": 71842079,
      "seq": "5"
    },
    {
      "lat": 180044698,
      "lon": 71842079,
      "seq": "6"
    },
    {
      "lat": 180044636,
      "lon": 71842514,
      "seq": "7"
    },
    {
      "lat": 180044539,
      "lon": 71843270,
      "seq": "8"
    },
    {
      "lat": 180044438,
      "lon": 71844613,
      "seq": "9"
    },
    {
      "lat": 180044294,
      "lon": 71846845,
      "seq": "10"
    },
    {
      "lat": 180044298,
      "lon": 71849340,
      "seq": "11"
    },
    {
      "lat": 180044366,
      "lon": 71850730,
      "seq": "12"
    },
    {
      "lat": 180044456,
      "lon": 71852126,
      "seq": "13"
    },
    {
      "lat": 180044590,
      "lon": 71853412,
      "seq": "14"
    },
    {
      "lat": 180044748,
      "lon": 71854708,
      "seq": "15"
    },
    {
      "lat": 180045130,
      "lon": 71856990,
      "seq": "16"
    },
    {
      "lat": 180045990,
      "lon": 71861083,
      "seq": "17"
    },
    {
      "lat": 180046033,
      "lon": 71861288,
      "seq": "18"
    },
    {
      "lat": 180046192,
      "lon": 71862052,
      "seq": "19"
    },
    {
      "lat": 180046951,
      "lon": 71865572,
      "seq": "20"
    },
    {
      "lat": 180048179,
      "lon": 71871257,
      "seq": "21"
    },
    {
      "lat": 180048514,
      "lon": 71872855,
      "seq": "22"
    },
    {
      "lat": 180048719,
      "lon": 71873773,
      "seq": "23"
    },
    {
      "lat": 180048719,
      "lon": 71873773,
      "seq": "24"
    },
    {
      "lat": 180048820,
      "lon": 71874205,
      "seq": "25"
    },
    {
      "lat": 180049136,
      "lon": 71875080,
      "seq": "26"
    },
    {
      "lat": 180049468,
      "lon": 71875552,
      "seq": "27"
    },
    {
      "lat": 180049900,
      "lon": 71876351,
      "seq": "28"
    },
    {
      "lat": 180050209,
      "lon": 71877082,
      "seq": "29"
    },
    {
      "lat": 180052420,
      "lon": 71884044,
      "seq": "30"
    },
    {
      "lat": 180052952,
      "lon": 71885902,
      "seq": "31"
    },
    {
      "lat": 180053460,
      "lon": 71887777,
      "seq": "32"
    },
    {
      "lat": 180054101,
      "lon": 71890362,
      "seq": "33"
    },
    {
      "lat": 180055552,
      "lon": 71896943,
      "seq": "34"
    },
    {
      "lat": 180055739,
      "lon": 71897710,
      "seq": "35"
    },
    {
      "lat": 180055768,
      "lon": 71897839,
      "seq": "36"
    },
    {
      "lat": 180055768,
      "lon": 71897839,
      "seq": "37"
    },
    {
      "lat": 180056405,
      "lon": 71900618,
      "seq": "38"
    },
    {
      "lat": 180057197,
      "lon": 71904208,
      "seq": "39"
    },
    {
      "lat": 180057924,
      "lon": 71907408,
      "seq": "40"
    },
    {
      "lat": 180058687,
      "lon": 71910878,
      "seq": "41"
    },
    {
      "lat": 180058968,
      "lon": 71912124,
      "seq": "42"
    },
    {
      "lat": 180059310,
      "lon": 71913406,
      "seq": "43"
    },
    {
      "lat": 180059638,
      "lon": 71914349,
      "seq": "44"
    },
    {
      "lat": 180060077,
      "lon": 71915288,
      "seq": "45"
    },
    {
      "lat": 180060599,
      "lon": 71916203,
      "seq": "46"
    },
    {
      "lat": 180061204,
      "lon": 71917020,
      "seq": "47"
    },
    {
      "lat": 180062028,
      "lon": 71917844,
      "seq": "48"
    },
    {
      "lat": 180062579,
      "lon": 71918284,
      "seq": "49"
    },
    {
      "lat": 180063144,
      "lon": 71918597,
      "seq": "50"
    },
    {
      "lat": 180063680,
      "lon": 71918845,
      "seq": "51"
    },
    {
      "lat": 180064433,
      "lon": 71919029,
      "seq": "52"
    },
    {
      "lat": 180065272,
      "lon": 71919094,
      "seq": "53"
    },
    {
      "lat": 180066265,
      "lon": 71919068,
      "seq": "54"
    },
    {
      "lat": 180066575,
      "lon": 71919061,
      "seq": "55"
    },
    {
      "lat": 180067003,
      "lon": 71919043,
      "seq": "56"
    },
    {
      "lat": 180067003,
      "lon": 71919043,
      "seq": "57"
    },
    {
      "lat": 180067212,
      "lon": 71919036,
      "seq": "58"
    },
    {
      "lat": 180068551,
      "lon": 71919025,
      "seq": "59"
    },
    {
      "lat": 180070106,
      "lon": 71918968,
      "seq": "60"
    },
    {
      "lat": 180071590,
      "lon": 71918914,
      "seq": "61"
    },
    {
      "lat": 180075290,
      "lon": 71918633,
      "seq": "62"
    },
    {
      "lat": 180075593,
      "lon": 71918669,
      "seq": "63"
    },
    {
      "lat": 180075812,
      "lon": 71918824,
      "seq": "64"
    },
    {
      "lat": 180076082,
      "lon": 71919187,
      "seq": "65"
    },
    {
      "lat": 180076244,
      "lon": 71919338,
      "seq": "66"
    },
    {
      "lat": 180076367,
      "lon": 71919418,
      "seq": "67"
    },
    {
      "lat": 180076457,
      "lon": 71919479,
      "seq": "68"
    },
    {
      "lat": 180076748,
      "lon": 71919482,
      "seq": "69"
    },
    {
      "lat": 180076928,
      "lon": 71919461,
      "seq": "70"
    },
    {
      "lat": 180078545,
      "lon": 71919328,
      "seq": "71"
    },
    {
      "lat": 180079402,
      "lon": 71919410,
      "seq": "72"
    },
    {
      "lat": 180079888,
      "lon": 71919547,
      "seq": "73"
    },
    {
      "lat": 180080514,
      "lon": 71919799,
      "seq": "74"
    },
    {
      "lat": 180081094,
      "lon": 71920145,
      "seq": "75"
    },
    {
      "lat": 180081670,
      "lon": 71920598,
      "seq": "76"
    },
    {
      "lat": 180082210,
      "lon": 71921146,
      "seq": "77"
    },
    {
      "lat": 180082714,
      "lon": 71921779,
      "seq": "78"
    },
    {
      "lat": 180083189,
      "lon": 71922485,
      "seq": "79"
    },
    {
      "lat": 180083815,
      "lon": 71923572,
      "seq": "80"
    },
    {
      "lat": 180085003,
      "lon": 71925635,
      "seq": "81"
    },
    {
      "lat": 180085104,
      "lon": 71925804,
      "seq": "82"
    },
    {
      "lat": 180085370,
      "lon": 71926243,
      "seq": "83"
    },
    {
      "lat": 180085370,
      "lon": 71926243,
      "seq": "84"
    },
    {
      "lat": 180085576,
      "lon": 71926582,
      "seq": "85"
    },
    {
      "lat": 180085921,
      "lon": 71927222,
      "seq": "86"
    },
    {
      "lat": 180086137,
      "lon": 71927500,
      "seq": "87"
    },
    {
      "lat": 180086324,
      "lon": 71927644,
      "seq": "88"
    },
    {
      "lat": 180086490,
      "lon": 71927705,
      "seq": "89"
    },
    {
      "lat": 180086656,
      "lon": 71927726,
      "seq": "90"
    },
    {
      "lat": 180086825,
      "lon": 71927690,
      "seq": "91"
    },
    {
      "lat": 180086983,
      "lon": 71927561,
      "seq": "92"
    },
    {
      "lat": 180087336,
      "lon": 71927071,
      "seq": "93"
    },
    {
      "lat": 180088135,
      "lon": 71925804,
      "seq": "94"
    },
    {
      "lat": 180088571,
      "lon": 71925282,
      "seq": "95"
    },
    {
      "lat": 180088700,
      "lon": 71925156,
      "seq": "96"
    },
    {
      "lat": 180089759,
      "lon": 71924094,
      "seq": "97"
    },
    {
      "lat": 180095918,
      "lon": 71917751,
      "seq": "98"
    },
    {
      "lat": 180096242,
      "lon": 71917423,
      "seq": "99"
    },
    {
      "lat": 180096296,
      "lon": 71917553,
      "seq": "100"
    },
    {
      "lat": 180096401,
      "lon": 71917441,
      "seq": "101"
    },
    {
      "lat": 180096768,
      "lon": 71917106,
      "seq": "102"
    },
    {
      "lat": 180097358,
      "lon": 71916494,
      "seq": "103"
    },
    {
      "lat": 180098356,
      "lon": 71915515,
      "seq": "104"
    },
    {
      "lat": 180099324,
      "lon": 71914464,
      "seq": "105"
    },
    {
      "lat": 180110761,
      "lon": 71902739,
      "seq": "106"
    },
    {
      "lat": 180112043,
      "lon": 71901457,
      "seq": "107"
    },
    {
      "lat": 180113972,
      "lon": 71899538,
      "seq": "108"
    },
    {
      "lat": 180115884,
      "lon": 71897627,
      "seq": "109"
    },
    {
      "lat": 180117666,
      "lon": 71895802,
      "seq": "110"
    },
    {
      "lat": 180117997,
      "lon": 71895470,
      "seq": "111"
    },
    {
      "lat": 180117997,
      "lon": 71895470,
      "seq": "112"
    },
    {
      "lat": 180118249,
      "lon": 71895218,
      "seq": "113"
    },
    {
      "lat": 180118717,
      "lon": 71894743,
      "seq": "114"
    },
    {
      "lat": 180118883,
      "lon": 71894588,
      "seq": "115"
    },
    {
      "lat": 180119074,
      "lon": 71894459,
      "seq": "116"
    },
    {
      "lat": 180119570,
      "lon": 71894059,
      "seq": "117"
    },
    {
      "lat": 180119887,
      "lon": 71893732,
      "seq": "118"
    },
    {
      "lat": 180120035,
      "lon": 71893555,
      "seq": "119"
    },
    {
      "lat": 180121518,
      "lon": 71891964,
      "seq": "120"
    },
    {
      "lat": 180121968,
      "lon": 71891420,
      "seq": "121"
    },
    {
      "lat": 180122378,
      "lon": 71890823,
      "seq": "122"
    },
    {
      "lat": 180126576,
      "lon": 71886517,
      "seq": "123"
    },
    {
      "lat": 180128664,
      "lon": 71884292,
      "seq": "124"
    },
    {
      "lat": 180130745,
      "lon": 71882222,
      "seq": "125"
    },
    {
      "lat": 180135011,
      "lon": 71877906,
      "seq": "126"
    },
    {
      "lat": 180136562,
      "lon": 71876362,
      "seq": "127"
    },
    {
      "lat": 180137974,
      "lon": 71874983,
      "seq": "128"
    },
    {
      "lat": 180139273,
      "lon": 71873658,
      "seq": "129"
    },
    {
      "lat": 180139619,
      "lon": 71873302,
      "seq": "130"
    },
    {
      "lat": 180139619,
      "lon": 71873302,
      "seq": "131"
    },
    {
      "lat": 180139766,
      "lon": 71873147,
      "seq": "132"
    },
    {
      "lat": 180140767,
      "lon": 71872142,
      "seq": "133"
    },
    {
      "lat": 180141790,
      "lon": 71871098,
      "seq": "134"
    },
    {
      "lat": 180142016,
      "lon": 71870846,
      "seq": "135"
    },
    {
      "lat": 180142193,
      "lon": 71870620,
      "seq": "136"
    },
    {
      "lat": 180142434,
      "lon": 71870252,
      "seq": "137"
    },
    {
      "lat": 180142880,
      "lon": 71869550,
      "seq": "138"
    },
    {
      "lat": 180143402,
      "lon": 71868730,
      "seq": "139"
    },
    {
      "lat": 180143780,
      "lon": 71868161,
      "seq": "140"
    },
    {
      "lat": 180144058,
      "lon": 71867851,
      "seq": "141"
    },
    {
      "lat": 180144392,
      "lon": 71867498,
      "seq": "142"
    },
    {
      "lat": 180147982,
      "lon": 71863859,
      "seq": "143"
    },
    {
      "lat": 180148442,
      "lon": 71863387,
      "seq": "144"
    },
    {
      "lat": 180150610,
      "lon": 71861098,
      "seq": "145"
    },
    {
      "lat": 180150898,
      "lon": 71860781,
      "seq": "146"
    },
    {
      "lat": 180150898,
      "lon": 71860781,
      "seq": "147"
    },
    {
      "lat": 180152183,
      "lon": 71859388,
      "seq": "148"
    },
    {
      "lat": 180152809,
      "lon": 71858736,
      "seq": "149"
    },
    {
      "lat": 180155585,
      "lon": 71855878,
      "seq": "150"
    },
    {
      "lat": 180155974,
      "lon": 71855406,
      "seq": "151"
    },
    {
      "lat": 180156301,
      "lon": 71854859,
      "seq": "152"
    },
    {
      "lat": 180156992,
      "lon": 71853318,
      "seq": "153"
    },
    {
      "lat": 180158303,
      "lon": 71850154,
      "seq": "154"
    },
    {
      "lat": 180159080,
      "lon": 71848300,
      "seq": "155"
    },
    {
      "lat": 180161910,
      "lon": 71841416,
      "seq": "156"
    },
    {
      "lat": 180162029,
      "lon": 71841128,
      "seq": "157"
    },
    {
      "lat": 180162058,
      "lon": 71841056,
      "seq": "158"
    },
    {
      "lat": 180162058,
      "lon": 71841056,
      "seq": "159"
    },
    {
      "lat": 180162205,
      "lon": 71840704,
      "seq": "160"
    },
    {
      "lat": 180162353,
      "lon": 71840344,
      "seq": "161"
    },
    {
      "lat": 180162464,
      "lon": 71840070,
      "seq": "162"
    },
    {
      "lat": 180162536,
      "lon": 71839865,
      "seq": "163"
    },
    {
      "lat": 180162572,
      "lon": 71839710,
      "seq": "164"
    },
    {
      "lat": 180162587,
      "lon": 71839624,
      "seq": "165"
    },
    {
      "lat": 180162616,
      "lon": 71839368,
      "seq": "166"
    },
    {
      "lat": 180162616,
      "lon": 71839174,
      "seq": "167"
    },
    {
      "lat": 180162562,
      "lon": 71839012,
      "seq": "168"
    },
    {
      "lat": 180162526,
      "lon": 71838828,
      "seq": "169"
    },
    {
      "lat": 180162500,
      "lon": 71838562,
      "seq": "170"
    },
    {
      "lat": 180162493,
      "lon": 71838396,
      "seq": "171"
    },
    {
      "lat": 180162472,
      "lon": 71837474,
      "seq": "172"
    },
    {
      "lat": 180162421,
      "lon": 71835919,
      "seq": "173"
    },
    {
      "lat": 180162378,
      "lon": 71835430,
      "seq": "174"
    },
    {
      "lat": 180162176,
      "lon": 71833565,
      "seq": "175"
    },
    {
      "lat": 180162079,
      "lon": 71830343,
      "seq": "176"
    },
    {
      "lat": 180161953,
      "lon": 71826106,
      "seq": "177"
    },
    {
      "lat": 180161870,
      "lon": 71823373,
      "seq": "178"
    },
    {
      "lat": 180161755,
      "lon": 71819626,
      "seq": "179"
    },
    {
      "lat": 180161737,
      "lon": 71819305,
      "seq": "180"
    },
    {
      "lat": 180161701,
      "lon": 71818985,
      "seq": "181"
    },
    {
      "lat": 180161651,
      "lon": 71818664,
      "seq": "182"
    },
    {
      "lat": 180161600,
      "lon": 71818366,
      "seq": "183"
    },
    {
      "lat": 180161514,
      "lon": 71818013,
      "seq": "184"
    },
    {
      "lat": 180161370,
      "lon": 71817534,
      "seq": "185"
    },
    {
      "lat": 180160420,
      "lon": 71815018,
      "seq": "186"
    },
    {
      "lat": 180160286,
      "lon": 71814668,
      "seq": "187"
    },
    {
      "lat": 180160078,
      "lon": 71814172,
      "seq": "188"
    },
    {
      "lat": 180159804,
      "lon": 71813606,
      "seq": "189"
    },
    {
      "lat": 180158069,
      "lon": 71810280,
      "seq": "190"
    },
    {
      "lat": 180158202,
      "lon": 71810284,
      "seq": "191"
    },
    {
      "lat": 180158022,
      "lon": 71809938,
      "seq": "192"
    },
    {
      "lat": 180157237,
      "lon": 71808422,
      "seq": "193"
    },
    {
      "lat": 180156726,
      "lon": 71807450,
      "seq": "194"
    },
    {
      "lat": 180154220,
      "lon": 71802630,
      "seq": "195"
    },
    {
      "lat": 180151153,
      "lon": 71796755,
      "seq": "196"
    },
    {
      "lat": 180151009,
      "lon": 71796499,
      "seq": "197"
    },
    {
      "lat": 180150836,
      "lon": 71796254,
      "seq": "198"
    },
    {
      "lat": 180150660,
      "lon": 71796028,
      "seq": "199"
    },
    {
      "lat": 180150512,
      "lon": 71795894,
      "seq": "200"
    },
    {
      "lat": 180150347,
      "lon": 71795776,
      "seq": "201"
    },
    {
      "lat": 180149983,
      "lon": 71795574,
      "seq": "202"
    },
    {
      "lat": 180149141,
      "lon": 71795106,
      "seq": "203"
    },
    {
      "lat": 180149094,
      "lon": 71795081,
      "seq": "204"
    },
    {
      "lat": 180149094,
      "lon": 71795081,
      "seq": "205"
    },
    {
      "lat": 180148806,
      "lon": 71794919,
      "seq": "206"
    },
    {
      "lat": 180148187,
      "lon": 71794573,
      "seq": "207"
    },
    {
      "lat": 180146981,
      "lon": 71793904,
      "seq": "208"
    },
    {
      "lat": 180146354,
      "lon": 71793554,
      "seq": "209"
    },
    {
      "lat": 180146023,
      "lon": 71793400,
      "seq": "210"
    },
    {
      "lat": 180144688,
      "lon": 71792644,
      "seq": "211"
    },
    {
      "lat": 180141178,
      "lon": 71790667,
      "seq": "212"
    },
    {
      "lat": 180141116,
      "lon": 71790635,
      "seq": "213"
    },
    {
      "lat": 180139007,
      "lon": 71789447,
      "seq": "214"
    },
    {
      "lat": 180136300,
      "lon": 71787931,
      "seq": "215"
    },
    {
      "lat": 180135940,
      "lon": 71787751,
      "seq": "216"
    },
    {
      "lat": 180135475,
      "lon": 71787496,
      "seq": "217"
    },
    {
      "lat": 180135310,
      "lon": 71787402,
      "seq": "218"
    },
    {
      "lat": 180135032,
      "lon": 71787280,
      "seq": "219"
    },
    {
      "lat": 180134878,
      "lon": 71787240,
      "seq": "220"
    },
    {
      "lat": 180134161,
      "lon": 71787078,
      "seq": "221"
    },
    {
      "lat": 180133859,
      "lon": 71787010,
      "seq": "222"
    },
    {
      "lat": 180132998,
      "lon": 71786822,
      "seq": "223"
    },
    {
      "lat": 180132491,
      "lon": 71786707,
      "seq": "224"
    },
    {
      "lat": 180132491,
      "lon": 71786707,
      "seq": "225"
    },
    {
      "lat": 180132422,
      "lon": 71786693,
      "seq": "226"
    },
    {
      "lat": 180131893,
      "lon": 71786578,
      "seq": "227"
    },
    {
      "lat": 180131472,
      "lon": 71786495,
      "seq": "228"
    },
    {
      "lat": 180131249,
      "lon": 71786441,
      "seq": "229"
    },
    {
      "lat": 180130846,
      "lon": 71786344,
      "seq": "230"
    },
    {
      "lat": 180130619,
      "lon": 71786254,
      "seq": "231"
    },
    {
      "lat": 180130388,
      "lon": 71786135,
      "seq": "232"
    },
    {
      "lat": 180130172,
      "lon": 71785976,
      "seq": "233"
    },
    {
      "lat": 180130018,
      "lon": 71785836,
      "seq": "234"
    },
    {
      "lat": 180129712,
      "lon": 71785505,
      "seq": "235"
    },
    {
      "lat": 180129535,
      "lon": 71785307,
      "seq": "236"
    },
    {
      "lat": 180129074,
      "lon": 71784749,
      "seq": "237"
    },
    {
      "lat": 180128192,
      "lon": 71783683,
      "seq": "238"
    },
    {
      "lat": 180127660,
      "lon": 71783039,
      "seq": "239"
    },
    {
      "lat": 180127372,
      "lon": 71782751,
      "seq": "240"
    },
    {
      "lat": 180127278,
      "lon": 71782672,
      "seq": "241"
    },
    {
      "lat": 180127051,
      "lon": 71782477,
      "seq": "242"
    },
    {
      "lat": 180126623,
      "lon": 71782218,
      "seq": "243"
    },
    {
      "lat": 180125471,
      "lon": 71781599,
      "seq": "244"
    },
    {
      "lat": 180122724,
      "lon": 71780144,
      "seq": "245"
    },
    {
      "lat": 180121093,
      "lon": 71779316,
      "seq": "246"
    },
    {
      "lat": 180120193,
      "lon": 71778820,
      "seq": "247"
    },
    {
      "lat": 180120193,
      "lon": 71778820,
      "seq": "248"
    },
    {
      "lat": 180119297,
      "lon": 71778348,
      "seq": "249"
    },
    {
      "lat": 180118811,
      "lon": 71778089,
      "seq": "250"
    },
    {
      "lat": 180118447,
      "lon": 71777898,
      "seq": "251"
    },
    {
      "lat": 180117644,
      "lon": 71777466,
      "seq": "252"
    },
    {
      "lat": 180115438,
      "lon": 71776303,
      "seq": "253"
    },
    {
      "lat": 180113396,
      "lon": 71775227,
      "seq": "254"
    },
    {
      "lat": 180112655,
      "lon": 71774798,
      "seq": "255"
    },
    {
      "lat": 180111856,
      "lon": 71774276,
      "seq": "256"
    },
    {
      "lat": 180111280,
      "lon": 71773931,
      "seq": "257"
    },
    {
      "lat": 180110851,
      "lon": 71773693,
      "seq": "258"
    },
    {
      "lat": 180110462,
      "lon": 71773481,
      "seq": "259"
    },
    {
      "lat": 180109739,
      "lon": 71773092,
      "seq": "260"
    },
    {
      "lat": 180109141,
      "lon": 71772779,
      "seq": "261"
    },
    {
      "lat": 180109141,
      "lon": 71772779,
      "seq": "262"
    },
    {
      "lat": 180108965,
      "lon": 71772685,
      "seq": "263"
    },
    {
      "lat": 180108659,
      "lon": 71772534,
      "seq": "264"
    },
    {
      "lat": 180108245,
      "lon": 71772322,
      "seq": "265"
    },
    {
      "lat": 180107435,
      "lon": 71771890,
      "seq": "266"
    },
    {
      "lat": 180106488,
      "lon": 71771396,
      "seq": "267"
    },
    {
      "lat": 180106420,
      "lon": 71771339,
      "seq": "268"
    },
    {
      "lat": 180106286,
      "lon": 71771180,
      "seq": "269"
    },
    {
      "lat": 180106214,
      "lon": 71771044,
      "seq": "270"
    },
    {
      "lat": 180106160,
      "lon": 71770903,
      "seq": "271"
    },
    {
      "lat": 180106117,
      "lon": 71770738,
      "seq": "272"
    },
    {
      "lat": 180106096,
      "lon": 71770601,
      "seq": "273"
    },
    {
      "lat": 180106085,
      "lon": 71770417,
      "seq": "274"
    },
    {
      "lat": 180106085,
      "lon": 71770252,
      "seq": "275"
    },
    {
      "lat": 180106229,
      "lon": 71769719,
      "seq": "276"
    },
    {
      "lat": 180106398,
      "lon": 71769143,
      "seq": "277"
    },
    {
      "lat": 180106852,
      "lon": 71767591,
      "seq": "278"
    },
    {
      "lat": 180107068,
      "lon": 71766911,
      "seq": "279"
    },
    {
      "lat": 180107237,
      "lon": 71766407,
      "seq": "280"
    },
    {
      "lat": 180107402,
      "lon": 71765935,
      "seq": "281"
    },
    {
      "lat": 180107924,
      "lon": 71764394,
      "seq": "282"
    },
    {
      "lat": 180108032,
      "lon": 71764096,
      "seq": "283"
    },
    {
      "lat": 180108176,
      "lon": 71763678,
      "seq": "284"
    },
    {
      "lat": 180108230,
      "lon": 71763552,
      "seq": "285"
    },
    {
      "lat": 180108295,
      "lon": 71763444,
      "seq": "286"
    },
    {
      "lat": 180108497,
      "lon": 71763145,
      "seq": "287"
    },
    {
      "lat": 180108659,
      "lon": 71762976,
      "seq": "288"
    },
    {
      "lat": 180108792,
      "lon": 71762846,
      "seq": "289"
    },
    {
      "lat": 180108806,
      "lon": 71762828,
      "seq": "290"
    },
    {
      "lat": 180108922,
      "lon": 71762746,
      "seq": "291"
    },
    {
      "lat": 180108990,
      "lon": 71762710,
      "seq": "292"
    },
    {
      "lat": 180109044,
      "lon": 71762684,
      "seq": "293"
    },
    {
      "lat": 180109163,
      "lon": 71762645,
      "seq": "294"
    },
    {
      "lat": 180109264,
      "lon": 71762627,
      "seq": "295"
    },
    {
      "lat": 180109429,
      "lon": 71762634,
      "seq": "296"
    },
    {
      "lat": 180110030,
      "lon": 71762594,
      "seq": "297"
    },
    {
      "lat": 180110628,
      "lon": 71762587,
      "seq": "298"
    },
    {
      "lat": 180111463,
      "lon": 71762756,
      "seq": "299"
    },
    {
      "lat": 180112291,
      "lon": 71762728,
      "seq": "300"
    },
    {
      "lat": 180114206,
      "lon": 71762706,
      "seq": "301"
    }
  ]
}]}
mock/vehicles.json
New file
@@ -0,0 +1 @@
{"lastUpdate":1493072360617,"vehicles":[{"id":"6352185295672181046","isDeleted":true},{"id":"6352185295672181548","category":"tram","color":"0xf89f05","tripId":"6351558574045172248","name":"50 Zajezdnia Podgórze","path":[{"length":3.935526321139517E-5,"y1":180114441,"y2":180114315,"x2":71775711,"angle":198,"x1":71775777}],"longitude":71775712,"latitude":180114316,"heading":199},{"id":"6352185295672181340","isDeleted":true},{"id":"6352185295672181371","category":"tram","color":"0xf89f05","tripId":"6351558574044832274","name":"14 Zajezdnia Podgórze","path":[{"length":2.915475947555991E-5,"y1":180111824,"y2":180111734,"x2":71774203,"angle":201,"x1":71774257}],"longitude":71774203,"latitude":180111734,"heading":201},{"id":"6352185295672181640","category":"tram","color":"0xf89f05","tripId":"6351558574045094419","name":"24 Zajezdnia Podgórze","path":[{"length":1.9323817359401515E-4,"y1":180116409,"y2":180115794,"x2":71776491,"angle":198,"x1":71776815}],"longitude":71776491,"latitude":180115794,"heading":199},{"id":"6352185295672181662","isDeleted":true},{"id":"6352185295672181163","isDeleted":true},{"id":"6352185295672180891","isDeleted":true},{"id":"6352185295672181380","isDeleted":true},{"id":"6352185295672181381","isDeleted":true},{"id":"6352185295672181043","isDeleted":true},{"id":"6352185295672181151","isDeleted":true},{"id":"6352185295672181359","isDeleted":true},{"id":"6352185295672181152","isDeleted":true},{"id":"6352185295672181545","category":"tram","color":"0xf89f05","tripId":"6351558574045192728","name":"50 Zajezdnia Podgórze","path":[{"length":1.923373459802447E-5,"y1":180110523,"y2":180110462,"x2":71773481,"angle":199,"x1":71773514},{"length":1.0558882189089556E-4,"y1":180110462,"y2":180110128,"x2":71773301,"angle":199,"x1":71773481}],"longitude":71773300,"latitude":180110126,"heading":199},{"id":"6352185295672181344","category":"tram","color":"0xf89f05","tripId":"6351558574044893716","name":"18 Zajezdnia Podgórze","path":[{"length":1.1395195982138296E-5,"y1":180107966,"y2":180107978,"x2":71771126,"angle":295,"x1":71771166},{"length":3.0805843599605936E-5,"y1":180107978,"y2":180108004,"x2":71771018,"angle":289,"x1":71771126},{"length":7.951100552687704E-5,"y1":180108004,"y2":180108036,"x2":71770734,"angle":280,"x1":71771018},{"length":4.5099889135160134E-5,"y1":180108036,"y2":180108047,"x2":71770572,"angle":275,"x1":71770734},{"length":3.70135110455302E-5,"y1":180108047,"y2":180108043,"x2":71770439,"angle":267,"x1":71770572},{"length":3.413209633467539E-5,"y1":180108043,"y2":180108032,"x2":71770316,"angle":262,"x1":71770439},{"length":3.847076812317915E-5,"y1":180108032,"y2":180108011,"x2":71770180,"angle":256,"x1":71770316},{"length":4.220189569229801E-5,"y1":180108011,"y2":180107975,"x2":71770032,"angle":249,"x1":71770180},{"length":6.428841264149761E-5,"y1":180107975,"y2":180107914,"x2":71769809,"angle":246,"x1":71770032},{"length":9.09560333326348E-5,"y1":180107914,"y2":180107831,"x2":71769492,"angle":247,"x1":71769809},{"length":4.3706864449539866E-4,"y1":180107831,"y2":180107435,"x2":71767969,"angle":247,"x1":71769492},{"length":1.787568180520005E-4,"y1":180107435,"y2":180107273,"x2":71767346,"angle":247,"x1":71767969}],"longitude":71767346,"latitude":180107273,"heading":248},{"id":"6352185295672181551","isDeleted":true},{"id":"6352185295672181049","isDeleted":true},{"id":"6352185295672181172","isDeleted":true},{"id":"6352185295672181145","category":"tram","color":"0xf89f05","tripId":"6351558574044951064","name":"19 Zajezdnia Nowa Huta","path":[{"length":1.902252475303211E-5,"y1":180284938,"y2":180284940,"x2":72232146,"angle":87,"x1":72232078},{"length":3.852193052002268E-4,"y1":180284940,"y2":180284988,"x2":72233532,"angle":86,"x1":72232146}],"longitude":72233532,"latitude":180284988,"heading":87},{"id":"6352185295672180876","category":"tram","color":"0xf89f05","tripId":"6351558574044471828","name":"3 Zajezdnia Nowa Huta","path":[{"length":5.91308239154449E-5,"y1":180302436,"y2":180302648,"x2":72235806,"angle":357,"x1":72235823}],"longitude":72235842,"latitude":180302191,"heading":357},{"id":"6352185295672181045","isDeleted":true},{"id":"6352185295672181365","category":"tram","color":"0xf89f05","tripId":"6351558574044918293","name":"18 Zajezdnia Podgórze","path":[{"length":1.842958301055844E-4,"y1":180119884,"y2":180119297,"x2":71778348,"angle":198,"x1":71778657},{"length":7.605882353215399E-5,"y1":180119297,"y2":180119055,"x2":71778219,"angle":198,"x1":71778348}],"longitude":71778219,"latitude":180119054,"heading":199},{"id":"6352185295672181542","isDeleted":true},{"id":"6352185295672181153","category":"tram","color":"0xf89f05","tripId":"6351558574044422675","name":"2 Zajezdnia Nowa Huta","longitude":72227500,"latitude":180308926,"heading":180},{"id":"6352185295672181197","isDeleted":true},{"id":"6352185295672181037","isDeleted":true},{"id":"6352185295672181550","isDeleted":true},{"id":"6352185295672180849","category":"tram","color":"0xf89f05","tripId":"6351558574045139471","name":"24 Zajezdnia Podgórze","longitude":71765500,"latitude":180107616,"heading":315},{"id":"6352185295672181358","isDeleted":true},{"id":"6352185295672181541","isDeleted":true},{"id":"6352185295672180854","category":"tram","color":"0xf89f05","tripId":"6351558574045266448","name":"52 Zajezdnia Nowa Huta","path":[{"length":8.459310779063917E-5,"y1":180291694,"y2":180291996,"x2":72236668,"angle":355,"x1":72236703},{"length":4.6172420885782706E-5,"y1":180291996,"y2":180292162,"x2":72236654,"angle":357,"x1":72236668}],"longitude":72236654,"latitude":180292162,"heading":357},{"id":"6352185295672180871","isDeleted":true},{"id":"6352185295672181169","isDeleted":true},{"id":"6352185295672181343","isDeleted":true},{"id":"6352185295672181063","isDeleted":true},{"id":"6352185295672181650","category":"tram","color":"0xf89f05","tripId":"6351558574045118996","name":"24 Zajezdnia Podgórze","path":[{"length":1.335439927331479E-4,"y1":180129381,"y2":180129074,"x2":71784749,"angle":217,"x1":71785119},{"length":3.650341046079343E-4,"y1":180129074,"y2":180128236,"x2":71783736,"angle":217,"x1":71784749}],"longitude":71783737,"latitude":180128237,"heading":218},{"id":"6352185295672181041","isDeleted":true},{"id":"6352185295672181138","isDeleted":true},{"id":"6352185295672181143","isDeleted":true},{"id":"6352185295672181664","isDeleted":true},{"id":"6352185295672181374","isDeleted":true},{"id":"6352185295672181140","isDeleted":true},{"id":"6352185295672181379","isDeleted":true},{"id":"6352185295672181195","isDeleted":true},{"id":"6352185295672181554","isDeleted":true},{"id":"6352185295672181654","isDeleted":true},{"id":"6352185295672181639","category":"tram","color":"0xf89f05","tripId":"6351558574045229586","name":"52 Zajezdnia Podgórze","path":[{"length":2.595922173979833E-5,"y1":180106078,"y2":180106052,"x2":71769866,"angle":114,"x1":71769777}],"longitude":71769865,"latitude":180106052,"heading":115},{"id":"6352185295672181649","isDeleted":true},{"id":"6352185295672181160","isDeleted":true},{"id":"6352185295672181552","isDeleted":true},{"id":"6352185295672181373","isDeleted":true},{"id":"6352185295672181191","isDeleted":true},{"id":"6352185295672181144","category":"tram","color":"0xf89f05","tripId":"6351558574044819986","name":"14 Zajezdnia Nowa Huta","path":[{"length":1.9409246407936417E-4,"y1":180284917,"y2":180284940,"x2":72232146,"angle":87,"x1":72231448},{"length":6.954142650252623E-4,"y1":180284940,"y2":180285026,"x2":72234648,"angle":86,"x1":72232146},{"length":9.408506788773983E-5,"y1":180285026,"y2":180285041,"x2":72234986,"angle":86,"x1":72234648}],"longitude":72234986,"latitude":180285041,"heading":87},{"id":"6352185295672181148","isDeleted":true},{"id":"6352185295672181543","category":"tram","color":"0xf89f05","tripId":"6351558574044623380","name":"8 Zajezdnia Podgórze","path":[{"length":1.7932352283322802E-4,"y1":180106872,"y2":180107068,"x2":71766911,"angle":296,"x1":71767526},{"length":4.964876634630847E-5,"y1":180107068,"y2":180107125,"x2":71766742,"angle":297,"x1":71766911}],"longitude":71766742,"latitude":180107125,"heading":297},{"id":"6352185295672180878","category":"tram","color":"0xf89f05","tripId":"6351558574044463637","name":"3 Zajezdnia Nowa Huta","path":[{"length":1.0049859548097947E-5,"y1":180287935,"y2":180287971,"x2":72237010,"angle":356,"x1":72237013}],"longitude":72237010,"latitude":180287971,"heading":356},{"id":"6352185295672181667","category":"tram","color":"0xf89f05","tripId":"6351558574044488210","name":"4 Zajezdnia Nowa Huta","longitude":72229125,"latitude":180308188,"heading":315},{"id":"6352185295672180988","category":"tram","color":"0xf89f05","tripId":"6351558574044631570","name":"9 Zajezdnia Nowa Huta","path":[{"length":2.6393162328013726E-4,"y1":180260013,"y2":180259920,"x2":72108457,"angle":98,"x1":72107512}],"longitude":72236380,"latitude":180293880,"heading":0},{"id":"6352185295672181166","isDeleted":true},{"id":"6352185295672181171","isDeleted":true},{"id":"6352185295672181559","isDeleted":true},{"id":"6352185295672181164","isDeleted":true},{"id":"6352185295672181538","isDeleted":true},{"id":"6352185295672181382","isDeleted":true},{"id":"6352185295672181168","isDeleted":true},{"id":"6352185295672181058","isDeleted":true},{"id":"6352185295672181060","isDeleted":true},{"id":"6352185295672180881","category":"tram","color":"0xf89f05","tripId":"6351558574045041167","name":"22 Kombinat","path":[{"length":1.273181432470355E-4,"y1":180258126,"y2":180258095,"x2":72130082,"angle":96,"x1":72129625},{"length":6.100819616939385E-5,"y1":180258095,"y2":180258098,"x2":72130302,"angle":88,"x1":72130082},{"length":1.1088733020444895E-4,"y1":180258098,"y2":180258149,"x2":72130698,"angle":78,"x1":72130302},{"length":8.805679985272291E-5,"y1":180258149,"y2":180258232,"x2":72131004,"angle":67,"x1":72130698},{"length":9.693296652910558E-5,"y1":180258232,"y2":180258361,"x2":72131328,"angle":58,"x1":72131004},{"length":8.285529554339446E-5,"y1":180258361,"y2":180258509,"x2":72131587,"angle":48,"x1":72131328},{"length":1.3418271125743188E-4,"y1":180258509,"y2":180258818,"x2":72131958,"angle":37,"x1":72131587},{"length":2.1054453210763173E-4,"y1":180258818,"y2":180259556,"x2":72132131,"angle":8,"x1":72131958},{"length":1.72026088714119E-4,"y1":180259556,"y2":180260161,"x2":72132265,"angle":8,"x1":72132131}],"longitude":72132265,"latitude":180260161,"heading":8},{"id":"6352185295672181193","isDeleted":true},{"id":"6352185295672181665","isDeleted":true},{"id":"6352185295672181362","isDeleted":true},{"id":"6352185295672181658","isDeleted":true},{"id":"6352185295672181567","category":"tram","color":"0xf89f05","tripId":"6351558574044672528","name":"9 Zajezdnia Podgórze","path":[{"length":8.676980782685217E-4,"y1":180155661,"y2":180154220,"x2":71802630,"angle":231,"x1":71805402},{"length":2.187165715019371E-4,"y1":180154220,"y2":180153856,"x2":71801932,"angle":230,"x1":71802630}],"longitude":71801932,"latitude":180153856,"heading":231},{"id":"6352185295672181642","isDeleted":true},{"id":"6352185295672181648","category":"tram","color":"0xf89f05","tripId":"6351558574044520978","name":"4 Zajezdnia Podgórze","path":[{"length":7.78973577965488E-5,"y1":180148432,"y2":180148187,"x2":71794573,"angle":199,"x1":71794710},{"length":3.831722850097504E-4,"y1":180148187,"y2":180146981,"x2":71793904,"angle":199,"x1":71794573},{"length":1.3607686167684322E-4,"y1":180146981,"y2":180146553,"x2":71793665,"angle":199,"x1":71793904}],"longitude":71793666,"latitude":180146554,"heading":200},{"id":"6352185295672181350","category":"tram","color":"0xf89f05","tripId":"6351558574044783123","name":"13 Zajezdnia Podgórze","path":[{"length":9.178761099678711E-5,"y1":180136588,"y2":180136300,"x2":71787931,"angle":199,"x1":71788093},{"length":1.1180339887234569E-4,"y1":180136300,"y2":180135940,"x2":71787751,"angle":197,"x1":71787931},{"length":1.4724808997086482E-4,"y1":180135940,"y2":180135475,"x2":71787496,"angle":199,"x1":71787751},{"length":5.283937925945691E-5,"y1":180135475,"y2":180135310,"x2":71787402,"angle":199,"x1":71787496},{"length":8.41724420435013E-5,"y1":180135310,"y2":180135032,"x2":71787280,"angle":195,"x1":71787402},{"length":4.438468204058395E-5,"y1":180135032,"y2":180134878,"x2":71787240,"angle":189,"x1":71787280},{"length":2.040245083337438E-4,"y1":180134878,"y2":180134161,"x2":71787078,"angle":188,"x1":71787240},{"length":6.161026915978307E-5,"y1":180134161,"y2":180133945,"x2":71787029,"angle":188,"x1":71787078}],"longitude":71787029,"latitude":180133944,"heading":188},{"id":"6352185295672181167","isDeleted":true},{"id":"6352185295672180866","isDeleted":true}]}