将 GPS 点与当前位置进行比较
Posted
技术标签:
【中文标题】将 GPS 点与当前位置进行比较【英文标题】:Compare GPS points to the current location 【发布时间】:2011-08-13 08:27:58 【问题描述】:我正在使用实例方法 distanceFromLocation 将我的新位置与 const 定义的位置进行比较
我给 CLLocation *bonuslocation 一个即时值,这是我感兴趣的 gps 点之一,然后我将其与新位置进行比较 如果距离播放音频文件的点小于 20m。
虽然这对一个位置非常有效,但它根本不起作用 如果我在本地向 updatelocationmanager 函数添加多个..
代码:
CLLocation *bonuslocation = [.....]
CLLocationDistance distancea = [bonuslocation distanceFromLocation newlocation]
if (distancea <= 20)
//play an audio
我可以就如何为 10 gps 点提供一些建议吗????
今天是我的生日,你能把它当作生日礼物吗? 谢谢。。
【问题讨论】:
【参考方案1】:为什么不把它放在一个循环中呢?还是只在 10 个地点进行比较?究竟是什么不工作?
编辑:
你从来没有提到你从哪里得到你的其他位置,所以让我们假设你以某种方式制作它们并将它们存储在一个数组中......
NSArray *locationArray;
我从您的评论中了解到,每个位置都有不同的声音?一种简单的方法是将声音存储在第二个数组中...
NSArray *soundsArray;
然后你可以在你的 locationManager:didUpdateToLocation:fromLocation 中执行以下操作:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
for(int i=0; i<[locationArray count]; i++)
CLLocation *location = (CLLocation *)[locationArray objectAtIndex:i];
if([newLocation distanceFromLocation:location] < 20.0)
//perform some action e.g.
//play sound at [soundArray objectAtIndex:i]
虽然我不建议简单地播放声音,因为这个简单的逻辑会导致声音在阈值内的每个位置同时播放一次。
【讨论】:
当我初始化 CLLOcation *bonuslocation 时,它只保留我声明的值之一,所以如果我说 CLLocation *differentlocation 它执行那部分代码,但不执行奖励位置的那部分.. 清楚吗? ? 如果我做一个 for(i=0; i=10; i++) 并在里面放一个 switch : case 你认为它会好吗?? 请查看我的答案的编辑。为什么需要 switch 语句?您是否对每个位置执行不同的操作?以上是关于将 GPS 点与当前位置进行比较的主要内容,如果未能解决你的问题,请参考以下文章
如何比较文本文件中的 gps 坐标以查看哪对最接近用户的当前位置 [关闭]