tileIDsInDeviceScreen static method
Implementation
static List<TileID> tileIDsInDeviceScreen(
Geometry geometry, List<int> screenSize) {
final List<TileID> allTiles = [];
try {
final points = maxGeoPointsInDeviceScreen(geometry, screenSize);
final tiles =
points.map((point) => tileIDFor(point, geometry.zoom.toInt()));
var minX = double.maxFinite.toInt();
var minY = double.maxFinite.toInt();
var maxX = 0;
var maxY = 0;
var zoom = 0;
for (var tile in tiles) {
minX = math.min(tile.x.toInt(), minX);
minY = math.min(tile.y.toInt(), minY);
maxX = math.max(tile.x.toInt(), maxX);
maxY = math.max(tile.y.toInt(), maxY);
zoom = math.max(tile.zoom.toInt(), zoom);
}
minX = clamp(minX.toDouble(), 0.0, double.maxFinite).toInt();
minY = clamp(minY.toDouble(), 0.0, double.maxFinite).toInt();
maxX = clamp(maxX.toDouble(), 0.0, double.maxFinite).toInt();
maxY = clamp(maxY.toDouble(), 0.0, double.maxFinite).toInt();
zoom = clamp(zoom.toDouble(), 0.0, _maxZoom).toInt();
if (zoom == 0) return [];
for (var x = minX; x <= maxX; x++) {
for (var y = minY; y <= maxY; y++) {
allTiles.add(TileID(x.toDouble(), y.toDouble(), zoom.toDouble()));
}
}
} catch (e) {
PMLogger.e(e);
}
return allTiles;
}