我想对于一个简单的解决方案,您可以使用类似的东西
(MKUserLocation *)userLocation;
CLLocation* X = [init from some coordinates];
CLLocation* Y = [init from some coordinates];
CLLocation* W = userLocation.location;
CLLocationDistance distToX = [X distanceFromLocation:W];
CLLocationDistance distToY = [Y distanceFromLocation:W];
并检测 W 与 X,Y 定义的线的距离,您可以调整以下代码:
def pointLineDistance(p,v1,v2):
return (numpy.linalg.norm(p-v1)**2 * numpy.linalg.norm(v2-v1)**2 - (numpy.dot((v1-p),(v2-v1)))**2) / numpy.linalg.norm(v2-v1)**2
抱歉,我在这里使用 python 和 numpy,只需复制并粘贴它,但这是点 p(你的 W)和其他两个向量 v1,v2(你的 X,Y)之间距离的 2d / 3d 广义实现。查找http://mathworld.wolfram.com/Point-LineDistance2-Dimensional.html
我不知道它如何符合球面坐标,但它适用于欧几里德空间。干杯,埃尔