获取从用户位置到 GMSPath 上最近点的距离
Get distance from user's location to nearest point on GMSPath
我正在使用 Google 地图 API 并在地图上绘制了 GMSPolyline
。我知道地图上哪个 "node"(转折点的纬度和经度位置)最接近用户的位置,并且我知道下一个即将到来的节点。鉴于这些信息,如何才能获得从用户当前位置到最近路径上最近点的距离?在下图中,当我们知道三个GPS坐标时,我们如何得到x?
将此视为几何问题而不是编程问题可能会使这更容易一些。可能存在一个库或 API 只需几行代码即可完成此操作,但这种方法仍应产生几乎没有开销的结果。
免责声明:此方法仅适用于直线。
你有两个点在你的路径上,一个点不在路径上。使用一些 basic algebra 你可以找到一条平行于路径并穿过用户位置的线,然后反转该线以找到用户位置和路径之间的最短线。然后它只是找到两条线的交点。
需要注意的一点是,节点之间的距离越大,欧式距离就越不准确。对于距离小于 ~100 英里的节点,这应该可以忽略不计。
试试这样的 (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
}
.
我正在使用 Google 地图 API 并在地图上绘制了 GMSPolyline
。我知道地图上哪个 "node"(转折点的纬度和经度位置)最接近用户的位置,并且我知道下一个即将到来的节点。鉴于这些信息,如何才能获得从用户当前位置到最近路径上最近点的距离?在下图中,当我们知道三个GPS坐标时,我们如何得到x?
将此视为几何问题而不是编程问题可能会使这更容易一些。可能存在一个库或 API 只需几行代码即可完成此操作,但这种方法仍应产生几乎没有开销的结果。 免责声明:此方法仅适用于直线。
你有两个点在你的路径上,一个点不在路径上。使用一些 basic algebra 你可以找到一条平行于路径并穿过用户位置的线,然后反转该线以找到用户位置和路径之间的最短线。然后它只是找到两条线的交点。
需要注意的一点是,节点之间的距离越大,欧式距离就越不准确。对于距离小于 ~100 英里的节点,这应该可以忽略不计。
试试这样的 (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
}
.