Cómo obtener la distancia entre dos ubicaciones en Windows Phone 8.1

En Windows Phone 8 parece que hay método.

GeoCoordinate.GetDistanceTo() 

Para calcular distancias entre dos ubicaciones. (Incluso si no se encuentra la página de referencia para el método.)

Pero, ¿dónde está el equivalente en todo el espacio de nombres de Geolocalización de Windows Phone 8.1 ?

No puedo encontrar un método para calcular la distancia entre dos ubicaciones en absoluto.

¿Cómo calcular la distancia entre dos ubicaciones en WP8.1?

GeoCoordinate.GetDistanceTo() se encuentra en el espacio de nombres System.Device.Location . Pero las aplicaciones de Windows 8.1 (aplicaciones de tiempo de ejecución) usan el espacio de nombres Windows.Devices.Geolocation donde no está presente el método GetDistanceTo() .

Así que puedes calcular la distancia utilizando la fórmula de Haversine . Aquí está la página de Haversine de wikipedia , puede conocer la fórmula desde allí.

Puede usar el siguiente código C # que usa la fórmula de Haversine para calcular la distancia entre dos coordenadas.

 using System; namespace HaversineFormula { ///  /// The distance type to return the results in. ///  public enum DistanceType { Miles, Kilometers }; ///  /// Specifies a Latitude / Longitude point. ///  public struct Position { public double Latitude; public double Longitude; } class Haversine { ///  /// Returns the distance in miles or kilometers of any two /// latitude / longitude points. ///  public double Distance(Position pos1, Position pos2, DistanceType type) { double R = (type == DistanceType.Miles) ? 3960 : 6371; double dLat = this.toRadian(pos2.Latitude - pos1.Latitude); double dLon = this.toRadian(pos2.Longitude - pos1.Longitude); double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(this.toRadian(pos1.Latitude)) * Math.Cos(this.toRadian(pos2.Latitude)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2); double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a))); double d = R * c; return d; } ///  /// Convert to Radians. ///  private double toRadian(double val) { return (Math.PI / 180) * val; } }