gpt4 book ai didi

iphone - 使用距离位置 : on none CLLocation objects?

转载 作者:行者123 更新时间:2023-12-03 21:08:34 27 4
gpt4 key购买 nike

我定义了一个名为 FGLocation 的类,它符合 MKAnnotation 协议(protocol),我想要做的是测量其中两个对象之间的距离。我注意到我可以使用 distanceFromLocation: 方法,该方法被定义为 CLLocation 类的方法。正如您在下面看到的,我正在创建两个临时 CLLocation 对象来进行计算,但我不禁认为我可能错过了更好/更简单的方法。有人对我正在做的事情或者我如何做得更好有任何意见吗?

// IS THERE A BETTER WAY TO DO THIS?
FGLocation *root = [annotations objectAtIndex:counter-1];
FGLocation *leaf = [annotations objectAtIndex:counter];

CLLocation *rootLocation = [[CLLocation alloc] initWithLatitude:[root coordinate].latitude longitude:[root coordinate].longitude];
CLLocation *leafLocation = [[CLLocation alloc] initWithLatitude:[leaf coordinate].latitude longitude:[leaf coordinate].longitude];
CLLocationDistance thisDistance = [rootLocation distanceFromLocation:leafLocation];
[rootLocation release];
[leafLocation release];

注意:我的 FGLocation 对象定义为(见下文),我在文档中注意到我不应该子类化 CLLocation。

@interface FGLocation : NSObject <MKAnnotation> {

最佳答案

我认为您正在做的事情是一种公平的方法,但可能存在异常(exception),如果您经常或在很多点上这样做,您可能希望实现某种缓存机制/阈值以进行重新计算。精确计算距离涉及非欧几里得几何,并且计算量大。 http://en.wikipedia.org/wiki/Haversine_formula

根据点在地球上的位置以及精度是否非常重要,您还可以通过假装在欧几里得空间中工作并利用毕达哥拉斯定理来捏造事实。我已经使用这种方案在大型数据集上创建了一个粗略过滤器,然后对通过过滤器的点进行了更精确的计算。

关于iphone - 使用距离位置 : on none CLLocation objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796996/

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