| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import 'package:latlong2/latlong.dart';
- class Directions {
- final List<DirectionSegment> segments;
- final List<LatLng> waypointsCoordinates;
- const Directions({required this.segments, required this.waypointsCoordinates});
- factory Directions.fromJson(Map<String, dynamic> json) {
- return Directions(
- segments: _getSegmentsFromJson(json),
- waypointsCoordinates: _getWaypointsCoordinatesFromJson(json),
- );
- }
- static List<DirectionSegment> _getSegmentsFromJson(Map<String, dynamic> json) {
- final segmentsJson = List<Map<String, dynamic>>.from(json['features'][0]['properties']['segments'][0]['steps']);
- final List<DirectionSegment> segments = [];
- for (final segmentJson in segmentsJson) {
- segments.add(DirectionSegment.fromJson(segmentJson));
- }
- return segments;
- }
- static List<LatLng> _getWaypointsCoordinatesFromJson(Map<String, dynamic> json) {
- final coordinatesJson = List.from(json['features'][0]['geometry']['coordinates']);
- final List<LatLng> waypointsCoordinates = [];
- for (final coordinateJson in coordinatesJson) {
- waypointsCoordinates.add(LatLng(coordinateJson[1], coordinateJson[0]));
- }
- return waypointsCoordinates;
- }
- }
- class DirectionSegment {
- final num distance;
- final num duration;
- final int type;
- final String instruction;
- final List<int> waypoints;
- const DirectionSegment({
- required this.distance,
- required this.duration,
- required this.type,
- required this.instruction,
- required this.waypoints,
- });
- factory DirectionSegment.fromJson(Map<String, dynamic> json) {
- return DirectionSegment(
- distance: json['distance'],
- duration: json['duration'],
- type: json['type'],
- instruction: json['instruction'],
- waypoints: List<int>.from(json['way_points']),
- );
- }
- }
|