Proj4Crs.fromFactory constructor
Proj4Crs.fromFactory({})
Implementation
factory Proj4Crs.fromFactory({
required String code,
required proj4.Projection proj4Projection,
Transformation? transformation,
List<Point>? origins,
Bounds<double>? bounds,
List<double>? scales,
List<double>? resolutions,
}) {
final projection =
_Proj4Projection(proj4Projection: proj4Projection, bounds: bounds);
List<Transformation>? transformations;
final infinite = null == 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');
}
if (null == origins || origins.isEmpty) {
transformation ??= const Transformation(1, 0, -1, 0);
} else {
if (origins.length == 1) {
final origin = origins[0];
transformation = Transformation(1, -origin.x, -1, origin.y);
} else {
transformations =
origins.map((p) => Transformation(1, -p.x, -1, p.y)).toList();
transformation = null;
}
}
return Proj4Crs._(
code: code,
projection: projection,
transformation: transformation!,
infinite: infinite,
transformations: transformations,
scales: finalScales,
);
}