rectangleTiles function

List<Coords<num>> rectangleTiles(
  1. Map<String, dynamic> input
)

Implementation

List<Coords<num>> rectangleTiles(Map<String, dynamic> input) {
  final LatLngBounds bounds = input['bounds'];
  final int minZoom = input['minZoom'];
  final int maxZoom = input['maxZoom'];
  final Crs crs = input['crs'];
  final CustomPoint<num> tileSize = input['tileSize'];

  return List.generate(
    maxZoom - (minZoom - 1),
    (z) {
      final zoomLevel = minZoom + z;

      final nwt = crs
          .latLngToPoint(bounds.northWest, zoomLevel.toDouble())
          .unscaleBy(tileSize)
          .floor();
      final nw = CustomPoint<int>(nwt.x, nwt.y);

      final set = crs
              .latLngToPoint(bounds.southEast, zoomLevel.toDouble())
              .unscaleBy(tileSize)
              .ceil() -
          const CustomPoint(1, 1);
      final se = CustomPoint<int>(set.x, set.y);

      return List.generate(
        se.x - (nw.x - 1),
        (x) => List.generate(
          se.y - (nw.y - 1),
          (y) => Coords(nw.x + x, nw.y + y)..z = zoomLevel,
          growable: false,
        ),
        growable: false,
      );
    },
    growable: false,
  ).expand((e) => e).expand((e) => e).toList(growable: false);
}