我想解决一个问题:给定一个 CLLocationCoordinate2D(坐标),它应该位于 GMSPath(路径)上,或者非常接近(~100m)。如何找到从坐标到路径的最短距离?
尝试比较路径上的所有坐标并计算距离,然后找出最小值,但这在计算成本方面不是一个好方法......
我想解决一个问题:给定一个 CLLocationCoordinate2D(坐标),它应该位于 GMSPath(路径)上,或者非常接近(~100m)。如何找到从坐标到路径的最短距离?
尝试比较路径上的所有坐标并计算距离,然后找出最小值,但这在计算成本方面不是一个好方法......
您需要使用坐标+三角几何。
如果您知道路径的起点和终点,则可以在这些点之间画一条假想线,并找到一个从您的 CLLocationCoordinate2D 垂直于该假想线的点。
如果您的起始位置称为 CLLocationCoordinate2D start,而您的结束位置是 CLLocationCoordinate2D end,则首先需要找到该直线的方程斜率。这将是 ABS(start.latitude - end.latitude) 转换为米,同样 ABS(start.longitude - end.longitude) 转换为米。
然后你的坡度=(高度/宽度)
你的假想线方程是 y = slope * x - 你的假想原点是你的起始位置。
看看这个