在GMSPath上获取用户位置到最近点的距离

时间:2015-04-01 17:17:51

标签: ios google-maps core-location google-maps-sdk-ios

我正在使用Google Maps API,并在地图上绘制了GMSPolyline个。我知道地图上哪个“节点”(转折点的纬度和长位)最接近用户的位置,我知道下一个即将到来的节点。鉴于这些信息,如何获得从用户当前位置到最近路径上最近点的距离?在下图中,当我们知道三个GPS坐标时,我们怎么能得到x?

enter image description here

2 个答案:

答案 0 :(得分:0)

将此视为几何问题而不是编程问题可能会使这更容易一些。可能存在一个库或API,只需几行代码即可完成此任务,但这种方法仍然可以产生几乎没有开销的结果。 免责声明:此方法仅适用于直线。

您的路径上有两个点,而路径上没有一个点。使用一些basic algebra,您可以找到与路径平行并贯穿用户位置的线,然后反转该线以找到用户位置和路径之间的最短线。然后它只是找到两条线的交集。

有一点需要注意,节点之间的距离越大,欧氏距离就越不准确。对于距离大约100英里的节点,这应该可以忽略不计。

答案 1 :(得分:0)

尝试这样的事情(swift 4.0)

func isApproaching(_ to:CLLocation, from:CLLocation? = nil, byDistanceInMeters:Double) -> Bool {

    guard let baseLocation = from ?? ThisIsMyDefaultUserLocationVariable.location else { return false }

    let delta = to.distance(from: baseLocation) as Double
    if delta < byDistanceInMeters { return true }
    return false
}

这是怎么称呼它:

if isApproaching(lastLocation, byDistanceInMeters: 50.0) ) {
    // this is where you are in 50m perimeter
} else {
    // here you are outside 
}