gpt4 book ai didi

ios - 在 Google Maps SDK 中查找要路线的位置距离

转载 作者:行者123 更新时间:2023-11-30 13:05:01 24 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,我需要一些有关此案例的帮助:

我需要检查,用户是否离开谷歌地图路线(GMSPolyline),以及从用户位置到路线最近点的距离是否超过 40 米 - 我需要重建路线。

我找不到正确的算法来检测用户到路线的距离是否超过 40 米。

我尝试使用此方法来查找路线上用户位置的投影(由 CGPointMake 转换为 CGPoint):

+ (CGPoint)projectionOfPoint:(CGPoint)origPoint toSegmentP1:(CGPoint)p1 p2:(CGPoint)p2 {
// for case line is parallel to x axis
if (p2.y == p1.y) {
return CGPointMake(origPoint.x, p1.y);

// for case line is parallel to y axis
} else if (p2.x == p1.x) {
return CGPointMake(p1.x, origPoint.y);
}

// line from segment
CGFloat kKoefLine1 = (p2.x - p1.x)/(p2.y - p1.y);
CGFloat bKoefLine1 = p1.y - kKoefLine1*p1.x;

// perpendicular line
CGFloat kKoefLine2 = -1/kKoefLine1;
CGFloat bKoefLine2 = origPoint.y - kKoefLine2*origPoint.x;

// cross point
CGFloat krossX = (bKoefLine2 - bKoefLine1)/(kKoefLine1 - kKoefLine2);
CGFloat krossY = kKoefLine2*krossX + bKoefLine2;

return CGPointMake(krossX, krossY);}

然后我计算返回的投影(转换为 CLLocation)和用户位置的距离,但它不起作用。

P.S.:如果能在 swift 上编写解决方案,我将不胜感激。

最佳答案

有一个GMSGeometryIsLocationOnPath Google Maps SDK 中 GMSGeometryUtils 模块中的函数。

您应该能够使用它来计算您需要的内容。

伪代码(未经测试):

let currentLocation: CLLocationCoordinate2D = ...
let routePath: GMSPath = routePolyline.path
let geodesic = true
let tolerance: CLLocationDistance = 40

let within40Meters = GMSGeometryIsLocationOnPath(currentLocation, routePath, geodesic, tolerance)

关于ios - 在 Google Maps SDK 中查找要路线的位置距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com