geofenceDistance method

Future<List<GeoJsonPoint>> geofenceDistance({
  1. required GeoJsonPoint point,
  2. required List<GeoJsonPoint> points,
  3. required num distance,
  4. bool disableStream = false,
  5. bool verbose = false,
})

Find all the GeoJsonPoint within a certain distance from a GeoJsonPoint

Implementation

Future<List<GeoJsonPoint>> geofenceDistance(
    {required GeoJsonPoint point,
    required List<GeoJsonPoint> points,
    required num distance,
    bool disableStream = false,
    bool verbose = false}) async {
  final foundPoints = <GeoJsonPoint>[];
  final finished = Completer<void>();
  late Iso iso;
  iso = Iso(_geoFenceDistanceRunner, onDataOut: (dynamic data) {
    if (data is GeoJsonPoint) {
      final point = data;
      foundPoints.add(point);
      if (!disableStream) {
        _processedFeaturesController.sink.add(point);
      }
    } else {
      iso.dispose();
      finished.complete();
    }
  }, onError: (dynamic e) {
    throw GeofencingException("Can not geofence $e");
  });
  final dataToProcess = _GeoFenceDistanceToProcess(
      points: points, point: point, distance: distance, verbose: verbose);
  unawaited(iso.run(<dynamic>[dataToProcess]));
  await finished.future;
  return foundPoints;
}