fit method
Create a new fitted camera based off the current camera
Implementation
@override
MapCamera fit(MapCamera camera) {
final paddingTL = Point<double>(padding.left, padding.top);
final paddingBR = Point<double>(padding.right, padding.bottom);
final paddingTotalXY = paddingTL + paddingBR;
final paddingOffset = (paddingBR - paddingTL) / 2;
final cameraSize = camera.nonRotatedSize - paddingTotalXY;
final projectedBoundsSize = Bounds(
camera.project(bounds.southEast, camera.zoom),
camera.project(bounds.northWest, camera.zoom),
).size;
final scale = _rectInRotRectScale(
angleRad: camera.rotationRad,
smallRectHalfWidth: cameraSize.x / 2.0,
smallRectHalfHeight: cameraSize.y / 2.0,
bigRectHalfWidth: projectedBoundsSize.x / 2.0,
bigRectHalfHeight: projectedBoundsSize.y / 2.0,
);
var newZoom = camera.getScaleZoom(1.0 / scale);
if (forceIntegerZoomLevel) {
newZoom = newZoom.ceilToDouble();
}
final min = math.max(
camera.minZoom ?? 0,
minZoom,
);
final max = math.min(
camera.maxZoom ?? double.infinity,
maxZoom ?? double.infinity,
);
newZoom = newZoom.clamp(min, max);
final newCenter = _getCenter(
camera,
newZoom: newZoom,
paddingOffset: paddingOffset,
);
return camera.withPosition(
center: newCenter,
zoom: newZoom,
);
}