从UWP中MapControl上的MapPolyline检测偏离航线

从UWP中MapControl上的MapPolyline检测偏离航线,uwp,gps,map-directions,uwp-maps,Uwp,Gps,Map Directions,Uwp Maps,我使用GPX文件中的定位点在MapControl上绘制了一条MapPolyline。如何检测我的位置何时偏离多段线?我试着测量锚点之间的距离,如果偏离20米,我会产生偏离航向的误差。这个问题是在一条直线上,锚点彼此之间的距离非常远,而我仍然在多段线上,偏离航线的错误就会出现 看看这个: 正如你所看到的,我偏离了方向。如何检测这个 谷歌的地图JavaScript API有一个方法正是为此目的而调用的。UWP有类似的功能吗?我通过将Google的PolyUtil从Google Maps SDK移植

我使用GPX文件中的定位点在
MapControl
上绘制了一条
MapPolyline
。如何检测我的位置何时偏离多段线?我试着测量锚点之间的距离,如果偏离20米,我会产生偏离航向的误差。这个问题是在一条直线上,锚点彼此之间的距离非常远,而我仍然在多段线上,偏离航线的错误就会出现

看看这个:

正如你所看到的,我偏离了方向。如何检测这个


谷歌的地图JavaScript API有一个方法正是为此目的而调用的。UWP有类似的功能吗?

我通过将Google的
PolyUtil
从Google Maps SDK移植到UWP解决了这个问题,效果不错


这是的源代码。

如果没有提供,您可以手动计算距离。从多段线的两个连接点(A和B)中取出一条直线,并与定位点形成三角形。如果任何角度大于等于90,则距离为点A到LP和点B到LP的最小值;如果所有角度均小于90,则距离为LP与直线之间的垂直距离。然后将相同的公式应用于其他行,并计算出哪一行最短。