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