Proj4Crs.fromFactory constructor
Proj4Crs.fromFactory({})
Create a new Crs that has projection.
Implementation
factory Proj4Crs.fromFactory({
required String code,
required proj4.Projection proj4Projection,
List<Point<double>>? origins,
Rect? bounds,
List<double>? scales,
List<double>? resolutions,
}) {
final projection = _Proj4Projection(
proj4Projection: proj4Projection,
bounds: bounds,
);
List<double> finalScales;
if (null != scales && scales.isNotEmpty) {
finalScales = scales;
} else if (null != resolutions && resolutions.isNotEmpty) {
finalScales = resolutions.map((r) => 1 / r).toList(growable: false);
} else {
throw Exception(
'Please provide scales or resolutions to determine scales');
}
List<_Transformation> transformations;
if (null == origins || origins.isEmpty) {
transformations = [const _Transformation(1, 0, -1, 0)];
} else {
if (origins.length == 1) {
final origin = origins[0];
transformations = [_Transformation(1, -origin.x, -1, origin.y)];
} else {
transformations =
origins.map((p) => _Transformation(1, -p.x, -1, p.y)).toList();
}
}
return Proj4Crs._(
code: code,
projection: projection,
infinite: null == bounds,
transformations: transformations,
scales: finalScales,
);
}