diff --git a/Storage/Storage.Test/GeoTest.cs b/Storage/Storage.Test/GeoTest.cs new file mode 100644 index 0000000..64eacdf --- /dev/null +++ b/Storage/Storage.Test/GeoTest.cs @@ -0,0 +1,23 @@ +using NUnit.Framework; +using LeanCloud.Storage; + +namespace LeanCloud.Test { + public class GeoTest { + [Test] + public void Calculate() { + LCGeoPoint p1 = new LCGeoPoint(20.0059, 110.3665); + LCGeoPoint p2 = new LCGeoPoint(20.0353, 110.3645); + double kilometers = p1.KilometersTo(p2); + TestContext.WriteLine(kilometers); + Assert.Less(kilometers - 3.275, 0.01); + + double miles = p1.MilesTo(p2); + TestContext.WriteLine(miles); + Assert.Less(miles - 2.035, 0.01); + + double radians = p1.RadiansTo(p2); + TestContext.WriteLine(radians); + Assert.Less(radians - 0.0005, 0.0001); + } + } +} diff --git a/Storage/Storage/LCGeoPoint.cs b/Storage/Storage/LCGeoPoint.cs index dd5c103..4e1cc39 100644 --- a/Storage/Storage/LCGeoPoint.cs +++ b/Storage/Storage/LCGeoPoint.cs @@ -72,7 +72,7 @@ namespace LeanCloud.Storage { double a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.Cos(lat1rad) * Math.Cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2; a = Math.Min(1.0, a); - return 2 * Math.Cos(Math.Sqrt(a)); + return 2 * Math.Sin(Math.Sqrt(a)); } } }