如何使用Xamarin表单获取当前位置与找到的每个附近位置之间的距离

时间:2018-12-06 14:48:49

标签: xamarin.forms visual-studio-2017

我正在开发一个小型应用程序,用于在Visual Studio 2017中使用xamarin表单从当前位置搜索附近的位置。我在sqlite中显示公司地址列表,例如,我在输入框中输入“ Perungudi”之类的内容,然后listview充满了匹配的附近查询“ Perungudi”的列表,这是来自sqlite的记录,我的问题是“如何获得当前位置到找到的每个附近位置之间的距离”(距离为1公里或2公里,名称),请给我建议解决此问题,以便我可以正确搜索

1 个答案:

答案 0 :(得分:0)

假设您的SQLite记录包含位置,则可以使用 Xamarin.Essentials 中的 CalculateDistance 来获取值。这是一种扩展方法,您可以在这里了解更多信息:https://docs.microsoft.com/en-us/dotnet/api/xamarin.essentials.locationextensions.calculatedistance

以下内容应有助于您理解该方法:

// Your DB Model
class SavedLocation
{
    public double Latitude { get; set; }
    public double Longitude { get; set; }
    public string Name { get; set; }
}

// Class for binding in the ListView
class LocationWithDistance
{
    public string Name { get; set; }
    public double Distance { get; set; }
}

class SomeViewModel
{
    public IList<LocationWithDistance> FetchNearbyLocations(string name)
    {
        var currentLocation = new Location(19, -99); // This is your current location
        var sqliteData = new List<SavedLocation>(); // Data you get from SQLite

        var itemsForListView = from item in sqliteData
                               select new LocationWithDistance
                               {
                                   Name = item.Name,
                                   Distance = new Location(item.Latitude, item.Longitude).CalculateDistance(currentLocation, DistanceUnits.Kilometers)
                               };

        return itemsForListView.ToList();
    }
}