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