buildRoute method

Future<bool?> buildRoute({
  1. required List<WayPoint> wayPoints,
  2. VTMapOptions? options,
})

Build the Route Used for the Navigation

wayPoints must not be null. A collection of WayPoint(longitude, latitude and name). Must be at least 2 or at most 25. Cannot use drivingWithTraffic mode if more than 3-waypoints. options options used to generate the route and used while navigating

Implementation

Future<bool?> buildRoute(
    {required List<WayPoint> wayPoints, VTMapOptions? options}) async {
  assert(wayPoints != null);
  assert(wayPoints.length > 1);
  // if (Platform.isIOS && wayPoints.length > 3 && options?.mode != null) {
  //   assert(options.mode != VTMapNavigationMode.drivingWithTraffic,
  //       "Error: Cannot use drivingWithTraffic Mode when you have more than 3 Stops");
  // }
  List<Map<String, Object?>> pointList = <Map<String, Object?>>[];

  for (int i = 0; i < wayPoints.length; i++) {
    var wayPoint = wayPoints[i];
    assert(wayPoint != null);
    assert(wayPoint.name != null);
    assert(wayPoint.latitude != null);
    assert(wayPoint.longitude != null);

    final pointMap = <String, dynamic>{
      "Order": i,
      "Name": wayPoint.name,
      "Latitude": wayPoint.latitude,
      "Longitude": wayPoint.longitude,
    };

    print(wayPoints[i].latitude);

    pointList.add(pointMap);
  }
  var i = 0;
  var wayPointMap =
      Map.fromIterable(pointList, key: (e) => i++, value: (e) => e);

  Map<String, dynamic> args = Map<String, dynamic>();
  if (options != null) args = options.toMap();
  args["wayPoints"] = wayPointMap;

  // _routeEventSubscription = _streamRouteEvent.listen(_onProgressData);
  return await MapboxGlPlatform.getInstance(_id)!.buildRoute(args);
  // return await _methodChannel
  //     .invokeMethod('buildRoute', args)
  //     .then<bool>((dynamic result) => result);
}