rectangleTiles function
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);
}