62 lines
1.2 KiB
Dart
62 lines
1.2 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
import 'package:furman_now/src/widgets/map/route_marker.dart';
|
|
import 'package:latlong2/latlong.dart';
|
|
|
|
class TransportationRoute {
|
|
final Polyline route;
|
|
final List<Stop> stops;
|
|
|
|
TransportationRoute({
|
|
required this.route,
|
|
required this.stops,
|
|
});
|
|
|
|
factory TransportationRoute.fromPoints({
|
|
required List<LatLng> points,
|
|
required Color color,
|
|
required List<Stop> stops,
|
|
}) {
|
|
var route = Polyline(
|
|
points: points,
|
|
color: color,
|
|
strokeWidth: 4,
|
|
);
|
|
return TransportationRoute(
|
|
route: route,
|
|
stops: stops,
|
|
);
|
|
}
|
|
}
|
|
|
|
class Stop {
|
|
int id;
|
|
String name;
|
|
LatLng location;
|
|
|
|
Stop({
|
|
required this.id,
|
|
required this.name,
|
|
required this.location,
|
|
});
|
|
|
|
factory Stop.fromLiveSafeJson(Map<String, dynamic> json) {
|
|
return Stop(
|
|
id: json["AddressID"],
|
|
name: json["Description"],
|
|
location: LatLng(json["Latitude"], json["Longitude"]),
|
|
);
|
|
}
|
|
|
|
Marker toMarker({required Color color}) {
|
|
return Marker(
|
|
point: location,
|
|
height: 100,
|
|
width: 100,
|
|
builder: (context) => RouteMarker(color: color),
|
|
);
|
|
}
|
|
}
|