diff --git a/src/LiveChartsCore/Geo/ControlCoordinatesProjector.cs b/src/LiveChartsCore/Geo/ControlCoordinatesProjector.cs index 1ef8b5fe8..474a8ebfd 100644 --- a/src/LiveChartsCore/Geo/ControlCoordinatesProjector.cs +++ b/src/LiveChartsCore/Geo/ControlCoordinatesProjector.cs @@ -60,18 +60,18 @@ public ControlCoordinatesProjector(float mapWidth, float mapHeight, float offset /// public static float[] PreferredRatio => new[] { 2f, 1f }; - /// + /// public override float[] ToMap(double[] point) { // simplified formula - return new[] + return new LvcPoint { - // x' = - (float)(_ox + (point[0] + 180) / 360d * _w), + // x' = + X = (float)(_ox + (point.X + 180) / 360d * _w), - // y' = - (float)(_oy + (90 - point[1]) / 180d * _h) - }; + // y' = + Y = (float)(_oy + (90 - point.Y) / 180d * _h) + }; // the following code explains the formula better: diff --git a/src/LiveChartsCore/Geo/MapProjector.cs b/src/LiveChartsCore/Geo/MapProjector.cs index b9e25cd0e..61b1d1999 100644 --- a/src/LiveChartsCore/Geo/MapProjector.cs +++ b/src/LiveChartsCore/Geo/MapProjector.cs @@ -52,5 +52,5 @@ public abstract class MapProjector /// /// The point. /// - public abstract float[] ToMap(double[] point); + public abstract LvcPoint ToMap(LvcPointD point); } diff --git a/src/LiveChartsCore/Geo/MercatorProjector.cs b/src/LiveChartsCore/Geo/MercatorProjector.cs index 781b4b496..de4255c93 100644 --- a/src/LiveChartsCore/Geo/MercatorProjector.cs +++ b/src/LiveChartsCore/Geo/MercatorProjector.cs @@ -62,23 +62,23 @@ public MercatorProjector(float mapWidth, float mapHeight, float offsetX, float o /// public static float[] PreferredRatio => new[] { 1f, 1f }; - /// - public override float[] ToMap(double[] point) + /// + public override LvcPoint ToMap(LvcPointD point) { - var lat = point[1]; - var lon = point[0]; + var lat = point.Y; + var lon = point.X; var latRad = lat * Math.PI / 180d; var mercN = Math.Log(Math.Tan(Math.PI / 4d + latRad / 2d), Math.E); var y = _h / 2d - _h * mercN / (2 * Math.PI); - return new[] + return new LvcPoint { // x' = - (float)((lon + 180) * (_w / 360d) + _ox), + X = (float)((lon + 180) * (_w / 360d) + _ox), // y' = - (float) y + _oy + Y = (float) y + _oy }; } } diff --git a/src/skiasharp/LiveChartsCore.SkiaSharp/MapFactory.cs b/src/skiasharp/LiveChartsCore.SkiaSharp/MapFactory.cs index 1d959e706..79dd4435f 100644 --- a/src/skiasharp/LiveChartsCore.SkiaSharp/MapFactory.cs +++ b/src/skiasharp/LiveChartsCore.SkiaSharp/MapFactory.cs @@ -106,10 +106,10 @@ public void GenerateLands(MapContext context) foreach (var point in landData.Coordinates) { - var p = projector.ToMap(new double[] { point.X, point.Y }); + var p = projector.ToMap(point); - var x = p[0]; - var y = p[1]; + var x = p.X; + var y = p.Y; if (isFirst) {