如何使用Windows Phone Map控件找到离我当前位置最近的兴趣点?

时间:2015-04-21 11:34:41

标签: c# xaml windows-phone-8.1

我需要使用Windows Phone 8.1上的地图控件从用户当前位置找到最近的位置(在这种情况下是医生的办公室)。

我的位置和XML文件(纬度,经度)可用。

是否有一个函数可以返回到我的XML文件中所有点的距离?

有没有办法可以异步或在后台运行该功能?

有没有办法让地图上的图钉动画显示(例如,让它看起来像是跳转)?

1 个答案:

答案 0 :(得分:1)

要计算距离,我总是在BasicGeoposition类上使用以下扩展方法。 要在后台执行此操作,请使用Task.Run(() => )

public static double GetDistanceTo(this BasicGeoposition from, double toLatitude, double toLongitude)
{
    if (double.IsNaN(from.Latitude) || double.IsNaN(from.Longitude))
    {
        throw new ArgumentException("On of the given Latitude or Longitudes is not correct");
    }
    else
    {
        double latitude = from.Latitude * 0.0174532925199433;
        double longitude = from.Longitude * 0.0174532925199433;
        double num = toLatitude * 0.0174532925199433;
        double longitude1 = toLongitude * 0.0174532925199433;
        double num1 = longitude1 - longitude;
        double num2 = num - latitude;
        double num3 = Math.Pow(Math.Sin(num2 / 2), 2) + Math.Cos(latitude) * Math.Cos(num) * Math.Pow(Math.Sin(num1 / 2), 2);
        double num4 = 2 * Math.Atan2(Math.Sqrt(num3), Math.Sqrt(1 - num3));
        double num5 = 6376500 * num4;

        return num5;
    }            
}