@wemap/osm 4.0.15 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/assets/itinerary-grenoble-otp-1.json +1536 -0
  2. package/assets/itinerary-grenoble-otp-2.json +1092 -0
  3. package/assets/itinerary-montpellier-outdoor-without-steps.json +110 -1
  4. package/assets/itinerary-montpellier-outdoor.json +513 -1
  5. package/index.js +21 -2
  6. package/package.json +6 -5
  7. package/src/routers/Itinerary.js +185 -0
  8. package/src/routers/Itinerary.type.spec.js +104 -0
  9. package/src/routers/Leg.js +101 -0
  10. package/src/routers/LevelChange.js +65 -0
  11. package/src/routers/RouterResponse.js +19 -0
  12. package/src/routers/RouterResponse.type.spec.js +24 -0
  13. package/src/routers/Step.js +113 -0
  14. package/src/routers/Utils.js +22 -0
  15. package/src/routers/custom/OsmNetworkUtils.js +194 -0
  16. package/src/{network → routers/custom}/OsmNetworkUtils.spec.js +13 -34
  17. package/src/routers/custom/OsmRouter.js +27 -0
  18. package/src/routers/custom/OsmRouter.spec.js +222 -0
  19. package/src/routers/custom/OsmRouterOptions.js +33 -0
  20. package/src/routers/custom/OsmRouterUtils.js +46 -0
  21. package/src/routers/custom/StepsGeneration.js +104 -0
  22. package/src/routers/info/ItineraryInfo.js +34 -0
  23. package/src/routers/info/ItineraryInfoManager.js +142 -0
  24. package/src/routers/info/ItineraryInfoManager.spec.js +54 -0
  25. package/src/routers/osrm/OsrmUtils.js +273 -0
  26. package/src/routers/osrm/OsrmUtils.spec.js +431 -0
  27. package/src/routers/otp/OtpUtils.js +172 -0
  28. package/src/routers/otp/OtpUtils.spec.js +97 -0
  29. package/src/network/OsmNetworkUtils.js +0 -168
  30. package/src/network/OsmRouter.spec.js +0 -174
  31. package/src/osrm/OsrmUtils.js +0 -284
  32. package/src/osrm/OsrmUtils.spec.js +0 -384
@@ -0,0 +1,1536 @@
1
+ {
2
+ "requestParameters": {
3
+ "date": "2021-03-01",
4
+ "walkSpeed": "1.1112",
5
+ "walkReluctance": "5",
6
+ "fromPlace": "45.187291,5.723455",
7
+ "transferPenalty": "60",
8
+ "locale": "fr_FR",
9
+ "numItineraries": "2",
10
+ "mode": "WALK,TRANSIT",
11
+ "arriveBy": "false",
12
+ "minTransferTime": "60",
13
+ "showIntermediateStops": "true",
14
+ "routerId": "prod",
15
+ "ui_date": "",
16
+ "walkBoardCost": "300",
17
+ "toPlace": "45.163729,5.74085",
18
+ "time": "14:54"
19
+ },
20
+ "plan": {
21
+ "date": 1614606840000,
22
+ "from": {
23
+ "name": "Origin",
24
+ "lon": 5.723455,
25
+ "lat": 45.187291,
26
+ "orig": "",
27
+ "vertexType": "NORMAL"
28
+ },
29
+ "to": {
30
+ "name": "Destination",
31
+ "lon": 5.74085,
32
+ "lat": 45.163729,
33
+ "orig": "",
34
+ "vertexType": "NORMAL"
35
+ },
36
+ "itineraries": [
37
+ {
38
+ "duration": 1206,
39
+ "startTime": 1614607210000,
40
+ "endTime": 1614608416000,
41
+ "walkTime": 484,
42
+ "transitTime": 720,
43
+ "waitingTime": 2,
44
+ "walkDistance": 452.2322138330627,
45
+ "walkLimitExceeded": false,
46
+ "elevationLost": 0.44000000000002615,
47
+ "elevationGained": 0.7400000000000091,
48
+ "transfers": 0,
49
+ "fare": {
50
+ "fare": {
51
+ "regular": {
52
+ "currency": {
53
+ "symbol": "€",
54
+ "currencyCode": "EUR",
55
+ "currency": "EUR",
56
+ "defaultFractionDigits": 2
57
+ },
58
+ "cents": 160
59
+ }
60
+ }
61
+ },
62
+ "legs": [
63
+ {
64
+ "startTime": 1614607210000,
65
+ "endTime": 1614607499000,
66
+ "departureDelay": 0,
67
+ "arrivalDelay": 0,
68
+ "realTime": false,
69
+ "distance": 257.721,
70
+ "pathway": false,
71
+ "mode": "WALK",
72
+ "route": "",
73
+ "agencyTimeZoneOffset": 3600000,
74
+ "interlineWithPreviousLeg": false,
75
+ "from": {
76
+ "name": "Origin",
77
+ "lon": 5.723455,
78
+ "lat": 45.187291,
79
+ "departure": 1614607210000,
80
+ "orig": "",
81
+ "vertexType": "NORMAL"
82
+ },
83
+ "to": {
84
+ "name": "Grenoble, Victor Hugo",
85
+ "stopId": "SEM:4321",
86
+ "stopCode": "4321",
87
+ "lon": 5.72533,
88
+ "lat": 45.1887,
89
+ "arrival": 1614607499000,
90
+ "departure": 1614607500000,
91
+ "stopIndex": 0,
92
+ "stopSequence": 1,
93
+ "vertexType": "TRANSIT"
94
+ },
95
+ "legGeometry": {
96
+ "points": "ctxrGm{|a@BETQ?AsA`@CMEKKDCOISOYMWQa@Ue@FGEIMQm@qAGKCICEE@Qa@",
97
+ "length": 23
98
+ },
99
+ "rentedBike": false,
100
+ "duration": 289,
101
+ "transitLeg": false,
102
+ "intermediateStops": [],
103
+ "steps": [
104
+ {
105
+ "distance": 17.793,
106
+ "relativeDirection": "DEPART",
107
+ "streetName": "plateau piétonnier",
108
+ "absoluteDirection": "SOUTHEAST",
109
+ "stayOn": false,
110
+ "area": false,
111
+ "bogusName": false,
112
+ "lon": 5.723598199907396,
113
+ "lat": 45.18738397888676,
114
+ "elevation": [
115
+ {
116
+ "first": 5.828,
117
+ "second": 213.32
118
+ },
119
+ {
120
+ "first": 19.578,
121
+ "second": 213.36
122
+ },
123
+ {
124
+ "first": 19.573,
125
+ "second": 213.36
126
+ },
127
+ {
128
+ "first": 20.703,
129
+ "second": 213.37
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "distance": 48.69,
135
+ "relativeDirection": "HARD_LEFT",
136
+ "streetName": "plateau piétonnier",
137
+ "absoluteDirection": "NORTH",
138
+ "stayOn": true,
139
+ "area": true,
140
+ "bogusName": true,
141
+ "lon": 5.723722100000001,
142
+ "lat": 45.1872504,
143
+ "elevation": [
144
+ {
145
+ "first": 0,
146
+ "second": 213.37
147
+ },
148
+ {
149
+ "first": 10,
150
+ "second": 213.34
151
+ },
152
+ {
153
+ "first": 20,
154
+ "second": 213.31
155
+ },
156
+ {
157
+ "first": 30,
158
+ "second": 213.28
159
+ },
160
+ {
161
+ "first": 40,
162
+ "second": 213.25
163
+ },
164
+ {
165
+ "first": 48.69,
166
+ "second": 213.23
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "distance": 11.844999999999999,
172
+ "relativeDirection": "RIGHT",
173
+ "streetName": "chemin piétonnier",
174
+ "absoluteDirection": "NORTHEAST",
175
+ "stayOn": true,
176
+ "area": false,
177
+ "bogusName": true,
178
+ "lon": 5.723559900000001,
179
+ "lat": 45.187673100000005,
180
+ "elevation": [
181
+ {
182
+ "first": 0,
183
+ "second": 213.23
184
+ },
185
+ {
186
+ "first": 5.51,
187
+ "second": 213.22
188
+ },
189
+ {
190
+ "first": 5.51,
191
+ "second": 213.22
192
+ },
193
+ {
194
+ "first": 11.85,
195
+ "second": 213.22
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "distance": 6.772,
201
+ "relativeDirection": "LEFT",
202
+ "streetName": "Boulevard Gambetta (path)",
203
+ "absoluteDirection": "NORTH",
204
+ "stayOn": false,
205
+ "area": false,
206
+ "bogusName": false,
207
+ "lon": 5.723688200000001,
208
+ "lat": 45.1877294,
209
+ "elevation": [
210
+ {
211
+ "first": 0,
212
+ "second": 213.22
213
+ },
214
+ {
215
+ "first": 6.77,
216
+ "second": 213.2
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "distance": 77.559,
222
+ "relativeDirection": "RIGHT",
223
+ "streetName": "Rue Béranger",
224
+ "absoluteDirection": "NORTHEAST",
225
+ "stayOn": false,
226
+ "area": false,
227
+ "bogusName": false,
228
+ "lon": 5.723657,
229
+ "lat": 45.187786200000005,
230
+ "elevation": [
231
+ {
232
+ "first": 0,
233
+ "second": 213.2
234
+ },
235
+ {
236
+ "first": 6.39,
237
+ "second": 213.2
238
+ },
239
+ {
240
+ "first": 6.393,
241
+ "second": 213.2
242
+ },
243
+ {
244
+ "first": 15.863,
245
+ "second": 213.2
246
+ },
247
+ {
248
+ "first": 15.858,
249
+ "second": 213.2
250
+ },
251
+ {
252
+ "first": 25.858,
253
+ "second": 213.18
254
+ },
255
+ {
256
+ "first": 35.858000000000004,
257
+ "second": 213.16
258
+ },
259
+ {
260
+ "first": 41.158,
261
+ "second": 213.15
262
+ },
263
+ {
264
+ "first": 41.153999999999996,
265
+ "second": 213.15
266
+ },
267
+ {
268
+ "first": 51.153999999999996,
269
+ "second": 213.13
270
+ },
271
+ {
272
+ "first": 58.45399999999999,
273
+ "second": 213.11
274
+ },
275
+ {
276
+ "first": 58.45399999999999,
277
+ "second": 213.11
278
+ },
279
+ {
280
+ "first": 68.454,
281
+ "second": 213.09
282
+ },
283
+ {
284
+ "first": 77.564,
285
+ "second": 213.07
286
+ }
287
+ ]
288
+ },
289
+ {
290
+ "distance": 4.434,
291
+ "relativeDirection": "RIGHT",
292
+ "streetName": "chemin piétonnier",
293
+ "absoluteDirection": "SOUTHEAST",
294
+ "stayOn": false,
295
+ "area": false,
296
+ "bogusName": true,
297
+ "lon": 5.7244482,
298
+ "lat": 45.188200300000005,
299
+ "elevation": [
300
+ {
301
+ "first": 0,
302
+ "second": 213.07
303
+ },
304
+ {
305
+ "first": 4.43,
306
+ "second": 213.09
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ "distance": 15.547,
312
+ "relativeDirection": "LEFT",
313
+ "streetName": "chemin piétonnier",
314
+ "absoluteDirection": "NORTHEAST",
315
+ "stayOn": true,
316
+ "area": false,
317
+ "bogusName": true,
318
+ "lon": 5.724483800000001,
319
+ "lat": 45.188169300000006,
320
+ "elevation": [
321
+ {
322
+ "first": 0,
323
+ "second": 213.09
324
+ },
325
+ {
326
+ "first": 5.34,
327
+ "second": 213.08
328
+ },
329
+ {
330
+ "first": 5.344,
331
+ "second": 213.08
332
+ },
333
+ {
334
+ "first": 15.544,
335
+ "second": 213.05
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ "distance": 54.485,
341
+ "relativeDirection": "CONTINUE",
342
+ "streetName": "Place Victor Hugo (path)",
343
+ "absoluteDirection": "NORTHEAST",
344
+ "stayOn": false,
345
+ "area": false,
346
+ "bogusName": false,
347
+ "lon": 5.7246264,
348
+ "lat": 45.1882657,
349
+ "elevation": [
350
+ {
351
+ "first": 0,
352
+ "second": 213.05
353
+ },
354
+ {
355
+ "first": 10,
356
+ "second": 213.02
357
+ },
358
+ {
359
+ "first": 20,
360
+ "second": 212.99
361
+ },
362
+ {
363
+ "first": 30,
364
+ "second": 212.97
365
+ },
366
+ {
367
+ "first": 40.51,
368
+ "second": 212.95
369
+ },
370
+ {
371
+ "first": 40.512,
372
+ "second": 212.95
373
+ },
374
+ {
375
+ "first": 47.462,
376
+ "second": 212.95
377
+ },
378
+ {
379
+ "first": 47.457,
380
+ "second": 212.95
381
+ },
382
+ {
383
+ "first": 51.727000000000004,
384
+ "second": 212.95
385
+ },
386
+ {
387
+ "first": 51.731,
388
+ "second": 212.95
389
+ },
390
+ {
391
+ "first": 54.481,
392
+ "second": 212.95
393
+ }
394
+ ]
395
+ },
396
+ {
397
+ "distance": 3.505,
398
+ "relativeDirection": "LEFT",
399
+ "streetName": "chemin piétonnier",
400
+ "absoluteDirection": "NORTH",
401
+ "stayOn": false,
402
+ "area": false,
403
+ "bogusName": true,
404
+ "lon": 5.7251712,
405
+ "lat": 45.188570000000006,
406
+ "elevation": [
407
+ {
408
+ "first": 0,
409
+ "second": 212.95
410
+ },
411
+ {
412
+ "first": 3.51,
413
+ "second": 212.95
414
+ }
415
+ ]
416
+ },
417
+ {
418
+ "distance": 17.091,
419
+ "relativeDirection": "RIGHT",
420
+ "streetName": "Victor Hugo",
421
+ "absoluteDirection": "NORTHEAST",
422
+ "stayOn": false,
423
+ "area": false,
424
+ "bogusName": false,
425
+ "lon": 5.7251631000000005,
426
+ "lat": 45.188601000000006,
427
+ "elevation": []
428
+ }
429
+ ]
430
+ },
431
+ {
432
+ "startTime": 1614607500000,
433
+ "endTime": 1614608220000,
434
+ "departureDelay": 0,
435
+ "arrivalDelay": 0,
436
+ "realTime": false,
437
+ "distance": 3058.9460891404597,
438
+ "pathway": false,
439
+ "mode": "BUS",
440
+ "route": "C4",
441
+ "agencyName": "M",
442
+ "agencyUrl": "https://www.mobilites-m.fr/",
443
+ "agencyTimeZoneOffset": 3600000,
444
+ "routeColor": "F3D000",
445
+ "routeType": 3,
446
+ "routeId": "SEM:4",
447
+ "routeTextColor": "000000",
448
+ "interlineWithPreviousLeg": false,
449
+ "headsign": "Eybens, Le Verderet",
450
+ "agencyId": "SEM",
451
+ "tripId": "SEM:25189715",
452
+ "serviceDate": "20210301",
453
+ "from": {
454
+ "name": "Grenoble, Victor Hugo",
455
+ "stopId": "SEM:4321",
456
+ "stopCode": "4321",
457
+ "lon": 5.72533,
458
+ "lat": 45.1887,
459
+ "arrival": 1614607499000,
460
+ "departure": 1614607500000,
461
+ "stopIndex": 0,
462
+ "stopSequence": 1,
463
+ "vertexType": "TRANSIT"
464
+ },
465
+ "to": {
466
+ "name": "Eybens, Maisons Neuves",
467
+ "stopId": "SEM:1579",
468
+ "stopCode": "1579",
469
+ "lon": 5.74252,
470
+ "lat": 45.16491,
471
+ "arrival": 1614608220000,
472
+ "departure": 1614608221000,
473
+ "stopIndex": 10,
474
+ "stopSequence": 11,
475
+ "vertexType": "TRANSIT"
476
+ },
477
+ "legGeometry": {
478
+ "points": "o|xrGcf}a@_@w@b@e@bAiAbAgAZ[^_@JIh@q@r@y@t@}@|@eAbCoCH[Fa@h@_EVaCVkBVmB?SAU?OLKLITO^]LI^]VSl@g@TQJGzAcATM^M^Mj@U~@e@fAc@JE@AHCRITIRKXMHEZYb@Q^OhBs@TITKJCLGFA?A~Ao@n@WJCr@Wd@S~Am@JCf@UTIBAHC@ADA|DaBTIRK~Ak@pAe@BAFCJCPKDC`Bq@JCzCmArCgA~@]DAHEB?n@Wb@Al@Wt@YRKPOn@]b@Of@IZORIv@]RILGFAFEBAb@Q|Ak@h@[|@_@tB{@|Ak@rEkBFCDADC`@ODC^Ob@QNE?AHCZMjGaCR?TK\\M",
479
+ "length": 127
480
+ },
481
+ "routeShortName": "C4",
482
+ "routeLongName": "Grenoble Victor Hugo / Eybens Le Verderet",
483
+ "rentedBike": false,
484
+ "duration": 720,
485
+ "transitLeg": true,
486
+ "intermediateStops": [
487
+ {
488
+ "name": "Grenoble, Docteur Martin",
489
+ "stopId": "SEM:0754",
490
+ "stopCode": "0754",
491
+ "lon": 5.72684,
492
+ "lat": 45.18766,
493
+ "arrival": 1614607560000,
494
+ "departure": 1614607560000,
495
+ "stopIndex": 1,
496
+ "stopSequence": 2,
497
+ "vertexType": "TRANSIT"
498
+ },
499
+ {
500
+ "name": "Grenoble, Chavant",
501
+ "stopId": "SEM:1698",
502
+ "stopCode": "1698",
503
+ "lon": 5.73245,
504
+ "lat": 45.18482,
505
+ "arrival": 1614607740000,
506
+ "departure": 1614607740000,
507
+ "stopIndex": 2,
508
+ "stopSequence": 3,
509
+ "vertexType": "TRANSIT"
510
+ },
511
+ {
512
+ "name": "Grenoble, Driant",
513
+ "stopId": "SEM:1766",
514
+ "stopCode": "1766",
515
+ "lon": 5.7341,
516
+ "lat": 45.18229,
517
+ "arrival": 1614607860000,
518
+ "departure": 1614607860000,
519
+ "stopIndex": 3,
520
+ "stopSequence": 4,
521
+ "vertexType": "TRANSIT"
522
+ },
523
+ {
524
+ "name": "Grenoble, Mallifaud",
525
+ "stopId": "SEM:0822",
526
+ "stopCode": "0822",
527
+ "lon": 5.73508,
528
+ "lat": 45.18033,
529
+ "arrival": 1614607920000,
530
+ "departure": 1614607920000,
531
+ "stopIndex": 4,
532
+ "stopSequence": 5,
533
+ "vertexType": "TRANSIT"
534
+ },
535
+ {
536
+ "name": "Grenoble, Bajatière",
537
+ "stopId": "SEM:0824",
538
+ "stopCode": "0824",
539
+ "lon": 5.73614,
540
+ "lat": 45.17814,
541
+ "arrival": 1614607920000,
542
+ "departure": 1614607920000,
543
+ "stopIndex": 5,
544
+ "stopSequence": 6,
545
+ "vertexType": "TRANSIT"
546
+ },
547
+ {
548
+ "name": "Grenoble, Ponsard",
549
+ "stopId": "SEM:0826",
550
+ "stopCode": "0826",
551
+ "lon": 5.7372,
552
+ "lat": 45.17597,
553
+ "arrival": 1614607980000,
554
+ "departure": 1614607980000,
555
+ "stopIndex": 6,
556
+ "stopSequence": 7,
557
+ "vertexType": "TRANSIT"
558
+ },
559
+ {
560
+ "name": "Grenoble, Paul Claudel",
561
+ "stopId": "SEM:0828",
562
+ "stopCode": "0828",
563
+ "lon": 5.73851,
564
+ "lat": 45.17336,
565
+ "arrival": 1614608040000,
566
+ "departure": 1614608040000,
567
+ "stopIndex": 7,
568
+ "stopSequence": 8,
569
+ "vertexType": "TRANSIT"
570
+ },
571
+ {
572
+ "name": "Grenoble, Teisseire",
573
+ "stopId": "SEM:0830",
574
+ "stopCode": "0830",
575
+ "lon": 5.73971,
576
+ "lat": 45.17091,
577
+ "arrival": 1614608100000,
578
+ "departure": 1614608100000,
579
+ "stopIndex": 8,
580
+ "stopSequence": 9,
581
+ "vertexType": "TRANSIT"
582
+ },
583
+ {
584
+ "name": "Grenoble, Jean Racine",
585
+ "stopId": "SEM:0832",
586
+ "stopCode": "0832",
587
+ "lon": 5.74175,
588
+ "lat": 45.16683,
589
+ "arrival": 1614608160000,
590
+ "departure": 1614608160000,
591
+ "stopIndex": 9,
592
+ "stopSequence": 10,
593
+ "vertexType": "TRANSIT"
594
+ }
595
+ ],
596
+ "steps": []
597
+ },
598
+ {
599
+ "startTime": 1614608221000,
600
+ "endTime": 1614608416000,
601
+ "departureDelay": 0,
602
+ "arrivalDelay": 0,
603
+ "realTime": false,
604
+ "distance": 194.059,
605
+ "pathway": false,
606
+ "mode": "WALK",
607
+ "route": "",
608
+ "agencyTimeZoneOffset": 3600000,
609
+ "interlineWithPreviousLeg": false,
610
+ "from": {
611
+ "name": "Eybens, Maisons Neuves",
612
+ "stopId": "SEM:1579",
613
+ "stopCode": "1579",
614
+ "lon": 5.74252,
615
+ "lat": 45.16491,
616
+ "arrival": 1614608220000,
617
+ "departure": 1614608221000,
618
+ "stopIndex": 10,
619
+ "stopSequence": 11,
620
+ "vertexType": "TRANSIT"
621
+ },
622
+ "to": {
623
+ "name": "Destination",
624
+ "lon": 5.74085,
625
+ "lat": 45.163729,
626
+ "arrival": 1614608416000,
627
+ "orig": "",
628
+ "vertexType": "NORMAL"
629
+ },
630
+ "legGeometry": {
631
+ "points": "ugtrGwq`b@DCJ?BLHl@DABFXb@bAfBVh@FJ~@vA",
632
+ "length": 12
633
+ },
634
+ "rentedBike": false,
635
+ "duration": 195,
636
+ "transitLeg": false,
637
+ "intermediateStops": [],
638
+ "steps": [
639
+ {
640
+ "distance": 34.867000000000004,
641
+ "relativeDirection": "DEPART",
642
+ "streetName": "Maisons Neuves",
643
+ "absoluteDirection": "SOUTH",
644
+ "stayOn": false,
645
+ "area": false,
646
+ "bogusName": false,
647
+ "lon": 5.742527442718813,
648
+ "lat": 45.16491186775702,
649
+ "elevation": [
650
+ {
651
+ "first": 16.014,
652
+ "second": 216.55
653
+ },
654
+ {
655
+ "first": 23.073999999999998,
656
+ "second": 216.57
657
+ },
658
+ {
659
+ "first": 23.073,
660
+ "second": 216.57
661
+ },
662
+ {
663
+ "first": 29.003,
664
+ "second": 216.59
665
+ }
666
+ ]
667
+ },
668
+ {
669
+ "distance": 2.503,
670
+ "relativeDirection": "LEFT",
671
+ "streetName": "chemin piétonnier",
672
+ "absoluteDirection": "SOUTH",
673
+ "stayOn": false,
674
+ "area": false,
675
+ "bogusName": true,
676
+ "lon": 5.7422494,
677
+ "lat": 45.164752,
678
+ "elevation": [
679
+ {
680
+ "first": 0,
681
+ "second": 216.67
682
+ },
683
+ {
684
+ "first": 2.5,
685
+ "second": 216.68
686
+ }
687
+ ]
688
+ },
689
+ {
690
+ "distance": 100.97,
691
+ "relativeDirection": "RIGHT",
692
+ "streetName": "Rue Voltaire",
693
+ "absoluteDirection": "SOUTHWEST",
694
+ "stayOn": false,
695
+ "area": false,
696
+ "bogusName": false,
697
+ "lon": 5.7422526000000005,
698
+ "lat": 45.1647296,
699
+ "elevation": [
700
+ {
701
+ "first": 0,
702
+ "second": 216.68
703
+ },
704
+ {
705
+ "first": 4.26,
706
+ "second": 216.7
707
+ },
708
+ {
709
+ "first": 4.262,
710
+ "second": 216.7
711
+ },
712
+ {
713
+ "first": 14.262,
714
+ "second": 216.75
715
+ },
716
+ {
717
+ "first": 24.262,
718
+ "second": 216.8
719
+ },
720
+ {
721
+ "first": 34.262,
722
+ "second": 216.85
723
+ },
724
+ {
725
+ "first": 44.262,
726
+ "second": 216.91
727
+ },
728
+ {
729
+ "first": 54.262,
730
+ "second": 216.96
731
+ },
732
+ {
733
+ "first": 64.262,
734
+ "second": 217.01
735
+ },
736
+ {
737
+ "first": 74.262,
738
+ "second": 217.06
739
+ },
740
+ {
741
+ "first": 84.262,
742
+ "second": 217.11
743
+ },
744
+ {
745
+ "first": 94.262,
746
+ "second": 217.16
747
+ },
748
+ {
749
+ "first": 100.972,
750
+ "second": 217.19
751
+ }
752
+ ]
753
+ },
754
+ {
755
+ "distance": 55.719,
756
+ "relativeDirection": "CONTINUE",
757
+ "streetName": "Chemin des Alisiers (path)",
758
+ "absoluteDirection": "SOUTHWEST",
759
+ "stayOn": false,
760
+ "area": false,
761
+ "bogusName": false,
762
+ "lon": 5.741303,
763
+ "lat": 45.1641173,
764
+ "elevation": [
765
+ {
766
+ "first": 0,
767
+ "second": 217.19
768
+ },
769
+ {
770
+ "first": 6.81,
771
+ "second": 217.22
772
+ }
773
+ ]
774
+ }
775
+ ]
776
+ }
777
+ ],
778
+ "tooSloped": false
779
+ },
780
+ {
781
+ "duration": 1206,
782
+ "startTime": 1614607750000,
783
+ "endTime": 1614608956000,
784
+ "walkTime": 484,
785
+ "transitTime": 720,
786
+ "waitingTime": 2,
787
+ "walkDistance": 452.2322138330627,
788
+ "walkLimitExceeded": false,
789
+ "elevationLost": 0.44000000000002615,
790
+ "elevationGained": 0.7400000000000091,
791
+ "transfers": 0,
792
+ "fare": {
793
+ "fare": {
794
+ "regular": {
795
+ "currency": {
796
+ "symbol": "€",
797
+ "currencyCode": "EUR",
798
+ "currency": "EUR",
799
+ "defaultFractionDigits": 2
800
+ },
801
+ "cents": 160
802
+ }
803
+ }
804
+ },
805
+ "legs": [
806
+ {
807
+ "startTime": 1614607750000,
808
+ "endTime": 1614608039000,
809
+ "departureDelay": 0,
810
+ "arrivalDelay": 0,
811
+ "realTime": false,
812
+ "distance": 257.721,
813
+ "pathway": false,
814
+ "mode": "WALK",
815
+ "route": "",
816
+ "agencyTimeZoneOffset": 3600000,
817
+ "interlineWithPreviousLeg": false,
818
+ "from": {
819
+ "name": "Origin",
820
+ "lon": 5.723455,
821
+ "lat": 45.187291,
822
+ "departure": 1614607750000,
823
+ "orig": "",
824
+ "vertexType": "NORMAL"
825
+ },
826
+ "to": {
827
+ "name": "Grenoble, Victor Hugo",
828
+ "stopId": "SEM:4321",
829
+ "stopCode": "4321",
830
+ "lon": 5.72533,
831
+ "lat": 45.1887,
832
+ "arrival": 1614608039000,
833
+ "departure": 1614608040000,
834
+ "stopIndex": 0,
835
+ "stopSequence": 1,
836
+ "vertexType": "TRANSIT"
837
+ },
838
+ "legGeometry": {
839
+ "points": "ctxrGm{|a@BETQ?AsA`@CMEKKDCOISOYMWQa@Ue@FGEIMQm@qAGKCICEE@Qa@",
840
+ "length": 23
841
+ },
842
+ "rentedBike": false,
843
+ "duration": 289,
844
+ "transitLeg": false,
845
+ "intermediateStops": [],
846
+ "steps": [
847
+ {
848
+ "distance": 17.793,
849
+ "relativeDirection": "DEPART",
850
+ "streetName": "plateau piétonnier",
851
+ "absoluteDirection": "SOUTHEAST",
852
+ "stayOn": false,
853
+ "area": false,
854
+ "bogusName": false,
855
+ "lon": 5.723598199907396,
856
+ "lat": 45.18738397888676,
857
+ "elevation": [
858
+ {
859
+ "first": 5.828,
860
+ "second": 213.32
861
+ },
862
+ {
863
+ "first": 19.578,
864
+ "second": 213.36
865
+ },
866
+ {
867
+ "first": 19.573,
868
+ "second": 213.36
869
+ },
870
+ {
871
+ "first": 20.703,
872
+ "second": 213.37
873
+ }
874
+ ]
875
+ },
876
+ {
877
+ "distance": 48.69,
878
+ "relativeDirection": "HARD_LEFT",
879
+ "streetName": "plateau piétonnier",
880
+ "absoluteDirection": "NORTH",
881
+ "stayOn": true,
882
+ "area": true,
883
+ "bogusName": true,
884
+ "lon": 5.723722100000001,
885
+ "lat": 45.1872504,
886
+ "elevation": [
887
+ {
888
+ "first": 0,
889
+ "second": 213.37
890
+ },
891
+ {
892
+ "first": 10,
893
+ "second": 213.34
894
+ },
895
+ {
896
+ "first": 20,
897
+ "second": 213.31
898
+ },
899
+ {
900
+ "first": 30,
901
+ "second": 213.28
902
+ },
903
+ {
904
+ "first": 40,
905
+ "second": 213.25
906
+ },
907
+ {
908
+ "first": 48.69,
909
+ "second": 213.23
910
+ }
911
+ ]
912
+ },
913
+ {
914
+ "distance": 11.844999999999999,
915
+ "relativeDirection": "RIGHT",
916
+ "streetName": "chemin piétonnier",
917
+ "absoluteDirection": "NORTHEAST",
918
+ "stayOn": true,
919
+ "area": false,
920
+ "bogusName": true,
921
+ "lon": 5.723559900000001,
922
+ "lat": 45.187673100000005,
923
+ "elevation": [
924
+ {
925
+ "first": 0,
926
+ "second": 213.23
927
+ },
928
+ {
929
+ "first": 5.51,
930
+ "second": 213.22
931
+ },
932
+ {
933
+ "first": 5.51,
934
+ "second": 213.22
935
+ },
936
+ {
937
+ "first": 11.85,
938
+ "second": 213.22
939
+ }
940
+ ]
941
+ },
942
+ {
943
+ "distance": 6.772,
944
+ "relativeDirection": "LEFT",
945
+ "streetName": "Boulevard Gambetta (path)",
946
+ "absoluteDirection": "NORTH",
947
+ "stayOn": false,
948
+ "area": false,
949
+ "bogusName": false,
950
+ "lon": 5.723688200000001,
951
+ "lat": 45.1877294,
952
+ "elevation": [
953
+ {
954
+ "first": 0,
955
+ "second": 213.22
956
+ },
957
+ {
958
+ "first": 6.77,
959
+ "second": 213.2
960
+ }
961
+ ]
962
+ },
963
+ {
964
+ "distance": 77.559,
965
+ "relativeDirection": "RIGHT",
966
+ "streetName": "Rue Béranger",
967
+ "absoluteDirection": "NORTHEAST",
968
+ "stayOn": false,
969
+ "area": false,
970
+ "bogusName": false,
971
+ "lon": 5.723657,
972
+ "lat": 45.187786200000005,
973
+ "elevation": [
974
+ {
975
+ "first": 0,
976
+ "second": 213.2
977
+ },
978
+ {
979
+ "first": 6.39,
980
+ "second": 213.2
981
+ },
982
+ {
983
+ "first": 6.393,
984
+ "second": 213.2
985
+ },
986
+ {
987
+ "first": 15.863,
988
+ "second": 213.2
989
+ },
990
+ {
991
+ "first": 15.858,
992
+ "second": 213.2
993
+ },
994
+ {
995
+ "first": 25.858,
996
+ "second": 213.18
997
+ },
998
+ {
999
+ "first": 35.858000000000004,
1000
+ "second": 213.16
1001
+ },
1002
+ {
1003
+ "first": 41.158,
1004
+ "second": 213.15
1005
+ },
1006
+ {
1007
+ "first": 41.153999999999996,
1008
+ "second": 213.15
1009
+ },
1010
+ {
1011
+ "first": 51.153999999999996,
1012
+ "second": 213.13
1013
+ },
1014
+ {
1015
+ "first": 58.45399999999999,
1016
+ "second": 213.11
1017
+ },
1018
+ {
1019
+ "first": 58.45399999999999,
1020
+ "second": 213.11
1021
+ },
1022
+ {
1023
+ "first": 68.454,
1024
+ "second": 213.09
1025
+ },
1026
+ {
1027
+ "first": 77.564,
1028
+ "second": 213.07
1029
+ }
1030
+ ]
1031
+ },
1032
+ {
1033
+ "distance": 4.434,
1034
+ "relativeDirection": "RIGHT",
1035
+ "streetName": "chemin piétonnier",
1036
+ "absoluteDirection": "SOUTHEAST",
1037
+ "stayOn": false,
1038
+ "area": false,
1039
+ "bogusName": true,
1040
+ "lon": 5.7244482,
1041
+ "lat": 45.188200300000005,
1042
+ "elevation": [
1043
+ {
1044
+ "first": 0,
1045
+ "second": 213.07
1046
+ },
1047
+ {
1048
+ "first": 4.43,
1049
+ "second": 213.09
1050
+ }
1051
+ ]
1052
+ },
1053
+ {
1054
+ "distance": 15.547,
1055
+ "relativeDirection": "LEFT",
1056
+ "streetName": "chemin piétonnier",
1057
+ "absoluteDirection": "NORTHEAST",
1058
+ "stayOn": true,
1059
+ "area": false,
1060
+ "bogusName": true,
1061
+ "lon": 5.724483800000001,
1062
+ "lat": 45.188169300000006,
1063
+ "elevation": [
1064
+ {
1065
+ "first": 0,
1066
+ "second": 213.09
1067
+ },
1068
+ {
1069
+ "first": 5.34,
1070
+ "second": 213.08
1071
+ },
1072
+ {
1073
+ "first": 5.344,
1074
+ "second": 213.08
1075
+ },
1076
+ {
1077
+ "first": 15.544,
1078
+ "second": 213.05
1079
+ }
1080
+ ]
1081
+ },
1082
+ {
1083
+ "distance": 54.485,
1084
+ "relativeDirection": "CONTINUE",
1085
+ "streetName": "Place Victor Hugo (path)",
1086
+ "absoluteDirection": "NORTHEAST",
1087
+ "stayOn": false,
1088
+ "area": false,
1089
+ "bogusName": false,
1090
+ "lon": 5.7246264,
1091
+ "lat": 45.1882657,
1092
+ "elevation": [
1093
+ {
1094
+ "first": 0,
1095
+ "second": 213.05
1096
+ },
1097
+ {
1098
+ "first": 10,
1099
+ "second": 213.02
1100
+ },
1101
+ {
1102
+ "first": 20,
1103
+ "second": 212.99
1104
+ },
1105
+ {
1106
+ "first": 30,
1107
+ "second": 212.97
1108
+ },
1109
+ {
1110
+ "first": 40.51,
1111
+ "second": 212.95
1112
+ },
1113
+ {
1114
+ "first": 40.512,
1115
+ "second": 212.95
1116
+ },
1117
+ {
1118
+ "first": 47.462,
1119
+ "second": 212.95
1120
+ },
1121
+ {
1122
+ "first": 47.457,
1123
+ "second": 212.95
1124
+ },
1125
+ {
1126
+ "first": 51.727000000000004,
1127
+ "second": 212.95
1128
+ },
1129
+ {
1130
+ "first": 51.731,
1131
+ "second": 212.95
1132
+ },
1133
+ {
1134
+ "first": 54.481,
1135
+ "second": 212.95
1136
+ }
1137
+ ]
1138
+ },
1139
+ {
1140
+ "distance": 3.505,
1141
+ "relativeDirection": "LEFT",
1142
+ "streetName": "chemin piétonnier",
1143
+ "absoluteDirection": "NORTH",
1144
+ "stayOn": false,
1145
+ "area": false,
1146
+ "bogusName": true,
1147
+ "lon": 5.7251712,
1148
+ "lat": 45.188570000000006,
1149
+ "elevation": [
1150
+ {
1151
+ "first": 0,
1152
+ "second": 212.95
1153
+ },
1154
+ {
1155
+ "first": 3.51,
1156
+ "second": 212.95
1157
+ }
1158
+ ]
1159
+ },
1160
+ {
1161
+ "distance": 17.091,
1162
+ "relativeDirection": "RIGHT",
1163
+ "streetName": "Victor Hugo",
1164
+ "absoluteDirection": "NORTHEAST",
1165
+ "stayOn": false,
1166
+ "area": false,
1167
+ "bogusName": false,
1168
+ "lon": 5.7251631000000005,
1169
+ "lat": 45.188601000000006,
1170
+ "elevation": []
1171
+ }
1172
+ ]
1173
+ },
1174
+ {
1175
+ "startTime": 1614608040000,
1176
+ "endTime": 1614608760000,
1177
+ "departureDelay": 0,
1178
+ "arrivalDelay": 0,
1179
+ "realTime": false,
1180
+ "distance": 3058.9460891404597,
1181
+ "pathway": false,
1182
+ "mode": "BUS",
1183
+ "route": "C4",
1184
+ "agencyName": "M",
1185
+ "agencyUrl": "https://www.mobilites-m.fr/",
1186
+ "agencyTimeZoneOffset": 3600000,
1187
+ "routeColor": "F3D000",
1188
+ "routeType": 3,
1189
+ "routeId": "SEM:4",
1190
+ "routeTextColor": "000000",
1191
+ "interlineWithPreviousLeg": false,
1192
+ "headsign": "Eybens, Le Verderet",
1193
+ "agencyId": "SEM",
1194
+ "tripId": "SEM:25189716",
1195
+ "serviceDate": "20210301",
1196
+ "from": {
1197
+ "name": "Grenoble, Victor Hugo",
1198
+ "stopId": "SEM:4321",
1199
+ "stopCode": "4321",
1200
+ "lon": 5.72533,
1201
+ "lat": 45.1887,
1202
+ "arrival": 1614608039000,
1203
+ "departure": 1614608040000,
1204
+ "stopIndex": 0,
1205
+ "stopSequence": 1,
1206
+ "vertexType": "TRANSIT"
1207
+ },
1208
+ "to": {
1209
+ "name": "Eybens, Maisons Neuves",
1210
+ "stopId": "SEM:1579",
1211
+ "stopCode": "1579",
1212
+ "lon": 5.74252,
1213
+ "lat": 45.16491,
1214
+ "arrival": 1614608760000,
1215
+ "departure": 1614608761000,
1216
+ "stopIndex": 10,
1217
+ "stopSequence": 11,
1218
+ "vertexType": "TRANSIT"
1219
+ },
1220
+ "legGeometry": {
1221
+ "points": "o|xrGcf}a@_@w@b@e@bAiAbAgAZ[^_@JIh@q@r@y@t@}@|@eAbCoCH[Fa@h@_EVaCVkBVmB?SAU?OLKLITO^]LI^]VSl@g@TQJGzAcATM^M^Mj@U~@e@fAc@JE@AHCRITIRKXMHEZYb@Q^OhBs@TITKJCLGFA?A~Ao@n@WJCr@Wd@S~Am@JCf@UTIBAHC@ADA|DaBTIRK~Ak@pAe@BAFCJCPKDC`Bq@JCzCmArCgA~@]DAHEB?n@Wb@Al@Wt@YRKPOn@]b@Of@IZORIv@]RILGFAFEBAb@Q|Ak@h@[|@_@tB{@|Ak@rEkBFCDADC`@ODC^Ob@QNE?AHCZMjGaCR?TK\\M",
1222
+ "length": 127
1223
+ },
1224
+ "routeShortName": "C4",
1225
+ "routeLongName": "Grenoble Victor Hugo / Eybens Le Verderet",
1226
+ "rentedBike": false,
1227
+ "duration": 720,
1228
+ "transitLeg": true,
1229
+ "intermediateStops": [
1230
+ {
1231
+ "name": "Grenoble, Docteur Martin",
1232
+ "stopId": "SEM:0754",
1233
+ "stopCode": "0754",
1234
+ "lon": 5.72684,
1235
+ "lat": 45.18766,
1236
+ "arrival": 1614608100000,
1237
+ "departure": 1614608100000,
1238
+ "stopIndex": 1,
1239
+ "stopSequence": 2,
1240
+ "vertexType": "TRANSIT"
1241
+ },
1242
+ {
1243
+ "name": "Grenoble, Chavant",
1244
+ "stopId": "SEM:1698",
1245
+ "stopCode": "1698",
1246
+ "lon": 5.73245,
1247
+ "lat": 45.18482,
1248
+ "arrival": 1614608280000,
1249
+ "departure": 1614608280000,
1250
+ "stopIndex": 2,
1251
+ "stopSequence": 3,
1252
+ "vertexType": "TRANSIT"
1253
+ },
1254
+ {
1255
+ "name": "Grenoble, Driant",
1256
+ "stopId": "SEM:1766",
1257
+ "stopCode": "1766",
1258
+ "lon": 5.7341,
1259
+ "lat": 45.18229,
1260
+ "arrival": 1614608400000,
1261
+ "departure": 1614608400000,
1262
+ "stopIndex": 3,
1263
+ "stopSequence": 4,
1264
+ "vertexType": "TRANSIT"
1265
+ },
1266
+ {
1267
+ "name": "Grenoble, Mallifaud",
1268
+ "stopId": "SEM:0822",
1269
+ "stopCode": "0822",
1270
+ "lon": 5.73508,
1271
+ "lat": 45.18033,
1272
+ "arrival": 1614608460000,
1273
+ "departure": 1614608460000,
1274
+ "stopIndex": 4,
1275
+ "stopSequence": 5,
1276
+ "vertexType": "TRANSIT"
1277
+ },
1278
+ {
1279
+ "name": "Grenoble, Bajatière",
1280
+ "stopId": "SEM:0824",
1281
+ "stopCode": "0824",
1282
+ "lon": 5.73614,
1283
+ "lat": 45.17814,
1284
+ "arrival": 1614608460000,
1285
+ "departure": 1614608460000,
1286
+ "stopIndex": 5,
1287
+ "stopSequence": 6,
1288
+ "vertexType": "TRANSIT"
1289
+ },
1290
+ {
1291
+ "name": "Grenoble, Ponsard",
1292
+ "stopId": "SEM:0826",
1293
+ "stopCode": "0826",
1294
+ "lon": 5.7372,
1295
+ "lat": 45.17597,
1296
+ "arrival": 1614608520000,
1297
+ "departure": 1614608520000,
1298
+ "stopIndex": 6,
1299
+ "stopSequence": 7,
1300
+ "vertexType": "TRANSIT"
1301
+ },
1302
+ {
1303
+ "name": "Grenoble, Paul Claudel",
1304
+ "stopId": "SEM:0828",
1305
+ "stopCode": "0828",
1306
+ "lon": 5.73851,
1307
+ "lat": 45.17336,
1308
+ "arrival": 1614608580000,
1309
+ "departure": 1614608580000,
1310
+ "stopIndex": 7,
1311
+ "stopSequence": 8,
1312
+ "vertexType": "TRANSIT"
1313
+ },
1314
+ {
1315
+ "name": "Grenoble, Teisseire",
1316
+ "stopId": "SEM:0830",
1317
+ "stopCode": "0830",
1318
+ "lon": 5.73971,
1319
+ "lat": 45.17091,
1320
+ "arrival": 1614608640000,
1321
+ "departure": 1614608640000,
1322
+ "stopIndex": 8,
1323
+ "stopSequence": 9,
1324
+ "vertexType": "TRANSIT"
1325
+ },
1326
+ {
1327
+ "name": "Grenoble, Jean Racine",
1328
+ "stopId": "SEM:0832",
1329
+ "stopCode": "0832",
1330
+ "lon": 5.74175,
1331
+ "lat": 45.16683,
1332
+ "arrival": 1614608700000,
1333
+ "departure": 1614608700000,
1334
+ "stopIndex": 9,
1335
+ "stopSequence": 10,
1336
+ "vertexType": "TRANSIT"
1337
+ }
1338
+ ],
1339
+ "steps": []
1340
+ },
1341
+ {
1342
+ "startTime": 1614608761000,
1343
+ "endTime": 1614608956000,
1344
+ "departureDelay": 0,
1345
+ "arrivalDelay": 0,
1346
+ "realTime": false,
1347
+ "distance": 194.059,
1348
+ "pathway": false,
1349
+ "mode": "WALK",
1350
+ "route": "",
1351
+ "agencyTimeZoneOffset": 3600000,
1352
+ "interlineWithPreviousLeg": false,
1353
+ "from": {
1354
+ "name": "Eybens, Maisons Neuves",
1355
+ "stopId": "SEM:1579",
1356
+ "stopCode": "1579",
1357
+ "lon": 5.74252,
1358
+ "lat": 45.16491,
1359
+ "arrival": 1614608760000,
1360
+ "departure": 1614608761000,
1361
+ "stopIndex": 10,
1362
+ "stopSequence": 11,
1363
+ "vertexType": "TRANSIT"
1364
+ },
1365
+ "to": {
1366
+ "name": "Destination",
1367
+ "lon": 5.74085,
1368
+ "lat": 45.163729,
1369
+ "arrival": 1614608956000,
1370
+ "orig": "",
1371
+ "vertexType": "NORMAL"
1372
+ },
1373
+ "legGeometry": {
1374
+ "points": "ugtrGwq`b@DCJ?BLHl@DABFXb@bAfBVh@FJ~@vA",
1375
+ "length": 12
1376
+ },
1377
+ "rentedBike": false,
1378
+ "duration": 195,
1379
+ "transitLeg": false,
1380
+ "intermediateStops": [],
1381
+ "steps": [
1382
+ {
1383
+ "distance": 34.867000000000004,
1384
+ "relativeDirection": "DEPART",
1385
+ "streetName": "Maisons Neuves",
1386
+ "absoluteDirection": "SOUTH",
1387
+ "stayOn": false,
1388
+ "area": false,
1389
+ "bogusName": false,
1390
+ "lon": 5.742527442718813,
1391
+ "lat": 45.16491186775702,
1392
+ "elevation": [
1393
+ {
1394
+ "first": 16.014,
1395
+ "second": 216.55
1396
+ },
1397
+ {
1398
+ "first": 23.073999999999998,
1399
+ "second": 216.57
1400
+ },
1401
+ {
1402
+ "first": 23.073,
1403
+ "second": 216.57
1404
+ },
1405
+ {
1406
+ "first": 29.003,
1407
+ "second": 216.59
1408
+ }
1409
+ ]
1410
+ },
1411
+ {
1412
+ "distance": 2.503,
1413
+ "relativeDirection": "LEFT",
1414
+ "streetName": "chemin piétonnier",
1415
+ "absoluteDirection": "SOUTH",
1416
+ "stayOn": false,
1417
+ "area": false,
1418
+ "bogusName": true,
1419
+ "lon": 5.7422494,
1420
+ "lat": 45.164752,
1421
+ "elevation": [
1422
+ {
1423
+ "first": 0,
1424
+ "second": 216.67
1425
+ },
1426
+ {
1427
+ "first": 2.5,
1428
+ "second": 216.68
1429
+ }
1430
+ ]
1431
+ },
1432
+ {
1433
+ "distance": 100.97,
1434
+ "relativeDirection": "RIGHT",
1435
+ "streetName": "Rue Voltaire",
1436
+ "absoluteDirection": "SOUTHWEST",
1437
+ "stayOn": false,
1438
+ "area": false,
1439
+ "bogusName": false,
1440
+ "lon": 5.7422526000000005,
1441
+ "lat": 45.1647296,
1442
+ "elevation": [
1443
+ {
1444
+ "first": 0,
1445
+ "second": 216.68
1446
+ },
1447
+ {
1448
+ "first": 4.26,
1449
+ "second": 216.7
1450
+ },
1451
+ {
1452
+ "first": 4.262,
1453
+ "second": 216.7
1454
+ },
1455
+ {
1456
+ "first": 14.262,
1457
+ "second": 216.75
1458
+ },
1459
+ {
1460
+ "first": 24.262,
1461
+ "second": 216.8
1462
+ },
1463
+ {
1464
+ "first": 34.262,
1465
+ "second": 216.85
1466
+ },
1467
+ {
1468
+ "first": 44.262,
1469
+ "second": 216.91
1470
+ },
1471
+ {
1472
+ "first": 54.262,
1473
+ "second": 216.96
1474
+ },
1475
+ {
1476
+ "first": 64.262,
1477
+ "second": 217.01
1478
+ },
1479
+ {
1480
+ "first": 74.262,
1481
+ "second": 217.06
1482
+ },
1483
+ {
1484
+ "first": 84.262,
1485
+ "second": 217.11
1486
+ },
1487
+ {
1488
+ "first": 94.262,
1489
+ "second": 217.16
1490
+ },
1491
+ {
1492
+ "first": 100.972,
1493
+ "second": 217.19
1494
+ }
1495
+ ]
1496
+ },
1497
+ {
1498
+ "distance": 55.719,
1499
+ "relativeDirection": "CONTINUE",
1500
+ "streetName": "Chemin des Alisiers (path)",
1501
+ "absoluteDirection": "SOUTHWEST",
1502
+ "stayOn": false,
1503
+ "area": false,
1504
+ "bogusName": false,
1505
+ "lon": 5.741303,
1506
+ "lat": 45.1641173,
1507
+ "elevation": [
1508
+ {
1509
+ "first": 0,
1510
+ "second": 217.19
1511
+ },
1512
+ {
1513
+ "first": 6.81,
1514
+ "second": 217.22
1515
+ }
1516
+ ]
1517
+ }
1518
+ ]
1519
+ }
1520
+ ],
1521
+ "tooSloped": false
1522
+ }
1523
+ ]
1524
+ },
1525
+ "debugOutput": {
1526
+ "precalculationTime": 500,
1527
+ "pathCalculationTime": 46,
1528
+ "pathTimes": [
1529
+ 31,
1530
+ 15
1531
+ ],
1532
+ "renderingTime": 0,
1533
+ "totalTime": 546,
1534
+ "timedOut": false
1535
+ }
1536
+ }