diff --git a/MapProjections/Shared/GeoApiProjection.cs b/MapProjections/Shared/GeoApiProjection.cs index d59ae7b0..0dc1f039 100644 --- a/MapProjections/Shared/GeoApiProjection.cs +++ b/MapProjections/Shared/GeoApiProjection.cs @@ -30,12 +30,13 @@ namespace MapControl.Projections private double scaleFactor; private string bboxFormat; - public GeoApiProjection(string wkt = null) + protected GeoApiProjection() { - if (wkt != null) - { - WKT = wkt; - } + } + + public GeoApiProjection(string wkt) + { + WKT = wkt; } /// @@ -46,7 +47,7 @@ namespace MapControl.Projections public string WKT { get { return CoordinateSystem?.WKT; } - set { CoordinateSystem = new CoordinateSystemFactory().CreateFromWkt(value); } + protected set { CoordinateSystem = new CoordinateSystemFactory().CreateFromWkt(value); } } /// @@ -55,7 +56,7 @@ namespace MapControl.Projections public ICoordinateSystem CoordinateSystem { get { return coordinateSystem; } - set + protected set { coordinateSystem = value ?? throw new ArgumentNullException(nameof(value)); diff --git a/MapProjections/Shared/UtmProjection.cs b/MapProjections/Shared/UtmProjection.cs index c5c9dcf9..d7aaa9a9 100644 --- a/MapProjections/Shared/UtmProjection.cs +++ b/MapProjections/Shared/UtmProjection.cs @@ -9,10 +9,6 @@ namespace MapControl.Projections { public class UtmProjection : GeoApiProjection { - public UtmProjection() - { - } - public UtmProjection(int zone, bool north) { SetZone(zone, north); @@ -20,17 +16,12 @@ namespace MapControl.Projections public UtmProjection(Location location) { - SetZone(location); + var zone = Math.Min((int)Math.Floor(Location.NormalizeLongitude(location.Longitude) + 180d) / 6 + 1, 60); + + SetZone(zone, location.Latitude >= 0d); } - public void SetZone(Location location) - { - var zoneNumber = Math.Min((int)(Location.NormalizeLongitude(location.Longitude) + 180d) / 6 + 1, 60); - - SetZone(zoneNumber, location.Latitude >= 0d); - } - - public void SetZone(int zone, bool north) + protected void SetZone(int zone, bool north) { if (zone < 1 || zone > 60) { diff --git a/SampleApps/ProjectionDemo/MainWindow.xaml.cs b/SampleApps/ProjectionDemo/MainWindow.xaml.cs index 3a928aed..ead69692 100644 --- a/SampleApps/ProjectionDemo/MainWindow.xaml.cs +++ b/SampleApps/ProjectionDemo/MainWindow.xaml.cs @@ -25,10 +25,7 @@ namespace ProjectionDemo { viewModel.Projections.Add(new MapControl.Projections.WebMercatorProjection()); - viewModel.Projections.Add(new GeoApiProjection - { - WKT = await httpClient.GetStringAsync("https://epsg.io/25832.wkt") // ETRS89 / UTM zone 32N - }); + viewModel.Projections.Add(new GeoApiProjection(await httpClient.GetStringAsync("https://epsg.io/25832.wkt"))); // ETRS89 / UTM zone 32N viewModel.Layers.Add( "OpenStreetMap WMS",