【问题标题】:Get distance from user's location to nearest point on GMSPath获取从用户位置到 GMSPath 上最近点的距离
【发布时间】:2023-03-19 07:21:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    尝试这样的事情(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 
    }
    

    .

    【讨论】:

    【解决方案2】:

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

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

    需要注意的一点是,节点之间的距离越大,那么欧几里德距离的准确度就越低。对于接近 100 英里的节点,这应该可以忽略不计。

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 2016-07-06
      • 2012-09-21
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多