Мне трудно понять, как правильно получить расстояния между двумя Location
с в Ксамарине. По крайней мере, я постоянно получаю неправильные результаты, согласно всемогущему Google.
Этот код объясняет проблему.
public void OnLocationChanged(Location location)
{
// Longitude/Latitude of Tower Bridge.
location.Longitude = 51.5053446;
location.Latitude = -0.0765396;
foreach (var store in this.stores)
{
if (store.DistanceView != null)
{
Location store_loc = new Location(location.Provider);
//store_loc.Longitude = double.Parse(store.GPSN);
//store_loc.Latitude = double.Parse(store.GPSW);
// Longitude/Latitude of Big Ben.
store_loc.Longitude = 51.5005747;
store_loc.Latitude = -0.1247025;
var distance = location.DistanceTo(store_loc);
// Google Maps ("measure distance") says 3.44km.
// Xamarin (variable "distance") says 5351.983 meters.
store.DistanceView.Text = distance.ToString();
}
}
}
Фактические местоположения, с которыми я работаю, различаются (по соображениям конфиденциальности), но ошибка измерения аналогична, поскольку я получаю результат, который не в два раза выше, чем измеренный Google Maps, но где-то в окрестности. В любом случае, приведенные выше измерения должны совпадать, а они - нет.