fit method
Returns a new MapCamera which fits this classes configuration.
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;
var newZoom = _getCoordinatesZoom(camera, paddingTotalXY);
if (maxZoom != null) newZoom = math.min(maxZoom!, newZoom);
final projectedPoints =
coordinates.map((coord) => camera.project(coord, newZoom));
final rotatedPoints =
projectedPoints.map((point) => point.rotate(-camera.rotationRad));
final rotatedBounds = Bounds.containing(rotatedPoints);
// Apply padding
final paddingOffset = (paddingBR - paddingTL) / 2;
final rotatedNewCenter = rotatedBounds.center + paddingOffset;
// Undo the rotation
final unrotatedNewCenter = rotatedNewCenter.rotate(camera.rotationRad);
final newCenter = camera.unproject(unrotatedNewCenter, newZoom);
return camera.withPosition(
center: newCenter,
zoom: newZoom,
);
}