From b0352c8f943ee3586b9915aafeb59042cddf0ae9 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Sat, 24 Jan 2026 22:41:25 +0100 Subject: [PATCH] MapProjection.EnableCenterUpdates method --- MapControl/Shared/AzimuthalProjection.cs | 3 ++- MapControl/Shared/MapProjection.cs | 9 +++++++-- MapControl/Shared/Wgs84AutoTmProjection.cs | 1 + MapControl/Shared/Wgs84AutoUtmProjection.cs | 2 ++ MapProjections/Shared/ProjNetMapProjection.cs | 3 +-- .../Shared/Wgs84OrthographicProjection.cs | 20 +++++++++---------- .../Shared/Wgs84StereographicProjection.cs | 2 +- 7 files changed, 24 insertions(+), 16 deletions(-) diff --git a/MapControl/Shared/AzimuthalProjection.cs b/MapControl/Shared/AzimuthalProjection.cs index c4826d56..6acdb99c 100644 --- a/MapControl/Shared/AzimuthalProjection.cs +++ b/MapControl/Shared/AzimuthalProjection.cs @@ -7,8 +7,9 @@ namespace MapControl { public abstract class AzimuthalProjection : MapProjection { - protected AzimuthalProjection() : base(true) + protected AzimuthalProjection() { + EnableCenterUpdates(); } public readonly struct ProjectedPoint diff --git a/MapControl/Shared/MapProjection.cs b/MapControl/Shared/MapProjection.cs index 6a9f04fd..f41c6087 100644 --- a/MapControl/Shared/MapProjection.cs +++ b/MapControl/Shared/MapProjection.cs @@ -17,7 +17,7 @@ namespace MapControl #else [System.ComponentModel.TypeConverter(typeof(MapProjectionConverter))] #endif - public abstract class MapProjection(bool hasCenter = false) + public abstract class MapProjection { public const double Wgs84EquatorialRadius = 6378137d; public const double Wgs84Flattening = 1d / 298.257223563; @@ -56,7 +56,7 @@ namespace MapControl public double MeterPerDegree => EquatorialRadius * Math.PI / 180d; private Location center; - private bool updateCenter = hasCenter; + private bool updateCenter; /// /// Gets or sets an optional projection center. If the property is set to a non-null value, @@ -77,6 +77,11 @@ namespace MapControl } } + protected void EnableCenterUpdates() + { + updateCenter = true; + } + /// /// Called by MapBase.UpdateTransform(). /// diff --git a/MapControl/Shared/Wgs84AutoTmProjection.cs b/MapControl/Shared/Wgs84AutoTmProjection.cs index 2f216efb..b3f1c457 100644 --- a/MapControl/Shared/Wgs84AutoTmProjection.cs +++ b/MapControl/Shared/Wgs84AutoTmProjection.cs @@ -16,6 +16,7 @@ public Wgs84AutoTmProjection(string crsId) { CrsId = crsId; + EnableCenterUpdates(); } protected override void CenterChanged() diff --git a/MapControl/Shared/Wgs84AutoUtmProjection.cs b/MapControl/Shared/Wgs84AutoUtmProjection.cs index 8f65b162..9dbf8cbe 100644 --- a/MapControl/Shared/Wgs84AutoUtmProjection.cs +++ b/MapControl/Shared/Wgs84AutoUtmProjection.cs @@ -28,6 +28,8 @@ namespace MapControl { CrsId = autoCrsId; } + + EnableCenterUpdates(); } protected override void CenterChanged() diff --git a/MapProjections/Shared/ProjNetMapProjection.cs b/MapProjections/Shared/ProjNetMapProjection.cs index 61691ed8..f3d3884c 100644 --- a/MapProjections/Shared/ProjNetMapProjection.cs +++ b/MapProjections/Shared/ProjNetMapProjection.cs @@ -14,8 +14,7 @@ namespace MapControl.Projections /// public class ProjNetMapProjection : MapProjection { - protected ProjNetMapProjection(bool hasCenter = false) - : base(hasCenter) + protected ProjNetMapProjection() { } diff --git a/MapProjections/Shared/Wgs84OrthographicProjection.cs b/MapProjections/Shared/Wgs84OrthographicProjection.cs index abcdf22f..fe89dcd9 100644 --- a/MapProjections/Shared/Wgs84OrthographicProjection.cs +++ b/MapProjections/Shared/Wgs84OrthographicProjection.cs @@ -12,23 +12,23 @@ namespace MapControl.Projections public class Wgs84OrthographicProjection : ProjNetMapProjection { public Wgs84OrthographicProjection() - : base(true) { + EnableCenterUpdates(); CenterChanged(); } protected override void CenterChanged() { var wktFormat = - "PROJCS[\"WGS 84 / World Mercator\"," + - WktConstants.GeogCsWgs84 + "," + - "PROJECTION[\"Orthographic\"]," + - "PARAMETER[\"latitude_of_origin\",{0:0.########}]," + - "PARAMETER[\"central_meridian\",{1:0.########}]," + - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]," + - "AXIS[\"Easting\",EAST]," + - "AXIS[\"Northing\",NORTH]" + - "AUTHORITY[\"AUTO2\",\"42003\"]]"; + "PROJCS[\"WGS 84 / World Mercator\"," + + WktConstants.GeogCsWgs84 + "," + + "PROJECTION[\"Orthographic\"]," + + "PARAMETER[\"latitude_of_origin\",{0:0.########}]," + + "PARAMETER[\"central_meridian\",{1:0.########}]," + + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]," + + "AXIS[\"Easting\",EAST]," + + "AXIS[\"Northing\",NORTH]" + + "AUTHORITY[\"AUTO2\",\"42003\"]]"; CoordinateSystemWkt = string.Format( CultureInfo.InvariantCulture, wktFormat, Center.Latitude, Center.Longitude); diff --git a/MapProjections/Shared/Wgs84StereographicProjection.cs b/MapProjections/Shared/Wgs84StereographicProjection.cs index 4f1cc8ae..3da4d8df 100644 --- a/MapProjections/Shared/Wgs84StereographicProjection.cs +++ b/MapProjections/Shared/Wgs84StereographicProjection.cs @@ -12,8 +12,8 @@ namespace MapControl.Projections public class Wgs84StereographicProjection : ProjNetMapProjection { public Wgs84StereographicProjection() - : base(true) { + EnableCenterUpdates(); CenterChanged(); }