fit method
Returns a new MapCamera which fits this classes configuration.
Implementation
@override
MapCamera fit(MapCamera camera) {
final paddingTL = Offset(padding.left, padding.top);
final paddingBR = Offset(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.projectAtZoom(coord, newZoom));
final rotatedBounds = RectExtension.containing(projectedPoints
.map((point) => point.rotate(-camera.rotationRad))
.toList());
// Apply padding
final paddingOffset = (paddingBR - paddingTL) / 2;
final rotatedNewCenter = rotatedBounds.center + paddingOffset;
// Undo the rotation
final unrotatedNewCenter = rotatedNewCenter.rotate(camera.rotationRad);
final newCenter = camera.unprojectAtZoom(unrotatedNewCenter, newZoom);
return camera.withPosition(
center: newCenter,
zoom: newZoom,
);
}