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 = _getBoundsZoom(camera, paddingTotalXY);
if (maxZoom != null) newZoom = math.min(maxZoom!, newZoom);
final paddingOffset = (paddingBR - paddingTL) / 2;
final swPoint = camera.project(bounds.southWest, newZoom);
final nePoint = camera.project(bounds.northEast, newZoom);
final Point<double> projectedCenter;
if (camera.rotation != 0.0) {
final swPointRotated = swPoint.rotate(-camera.rotationRad);
final nePointRotated = nePoint.rotate(-camera.rotationRad);
final centerRotated =
(swPointRotated + nePointRotated) / 2 + paddingOffset;
projectedCenter = centerRotated.rotate(camera.rotationRad);
} else {
projectedCenter = (swPoint + nePoint) / 2 + paddingOffset;
}
final center = camera.unproject(projectedCenter, newZoom);
return camera.withPosition(
center: center,
zoom: newZoom,
);
}