Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程

Posted

技术标签:

【中文标题】Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程【英文标题】:Xamarin.Forms - Get miles Between Two Coordinates Using Xamarin.Essentials 【发布时间】:2021-09-02 07:51:25 【问题描述】:

我正在尝试使用 xamarin Essentials 获取不同地点之间的里程。我有起点和目的地的坐标。距离变量等于 2134.13057845059。我需要将此数字转换为里程吗?它应该等于 30 英里左右。

 var location = await Geolocation.GetLastKnownLocationAsync();
            var courtLocation = new Location(Convert.ToDouble(item.Latitude), Convert.ToDouble(item.Longitude));

            double distance = Location.CalculateDistance(location, courtLocation, DistanceUnits.Miles);
            

【问题讨论】:

【参考方案1】:

CalculateDistance的最后一个参数是返回类型的单位。

您正在请求公里

double distance = Location.CalculateDistance(location, courtLocation, DistanceUnits.Kilometers);

如果您想申请里程,请使用

double distance = Location.CalculateDistance(location, courtLocation, DistanceUnits.Miles);
        

这对我有用,如果您仍然得到不好的结果,我会仔细检查您的输入和转换

var loc1 = new Location(33.887749, -84.345818);
var loc2 = new Location(33.807920, -84.046791);

// result is 18.023...
double distance = Location.CalculateDistance(loc1, loc2, DistanceUnits.Miles);            

【讨论】:

我将其设置为邮件,但仍然会收到大量数据,而且我知道这些坐标并且彼此相距 30 到 40 英里。 您使用的两个位置是什么? 目的地 - lat:33.887749 Long:-84.345818 CurrentLocation - lat:33.807920 long:-84.046791 谢谢,您如何将行驶时间添加到距离值? time = distance/speed。或者,如果你想要一个“真实”的价值,你需要使用一些提供路线数据的服务

以上是关于Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms error MSB6006: “java.exe”已退出,代码为 2 解决办法

Xamarin Forms - 从 2017 年到 2019 年更新 Visual Studio 后 iOS 上的奇怪行为

如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色

如果调用方未使用 Xamarin.Forms,Xamarin 依赖项服务能否正常工作?

如何使用 Xamarin.Forms 创建抽屉/滑块菜单?

在 Xamarin.Forms 中使用 Android 绑定