2011-08-13 58 views
1

我使用的实例方法distanceFromLocation为了与常量定义的位置比较GPS点到当前位置

比较我的新位置

我给CLLocation * bonuslocation瞬间值,它是GPS点我是一个如果距离音频文件播放点的距离小于20米,则将其与新位置 进行比较。

虽然这是一个位置正常使用它不会在所有的工作 如果我在本地添加到updatelocationmanager功能一多..

代码:

CLLocation *bonuslocation = [.....] 
CLLocationDistance distancea = [bonuslocation distanceFromLocation newlocation] 
if (distancea <= 20) 
{ 
//play an audio 
} 

我能得到一些如何做到这一点10点的建议?

今天是我的生日你能否看到作为生日礼物? 谢谢..

回答

0

为什么不把它放在循环中?或者只是在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] 
     } 
    } 
} 

虽然我不推荐只是简单地播放声音,因为这种简单的逻辑会导致声音在同一时间内为阈值内的每个位置播放一次。

+0

当我初始化CLLOcation * bonuslocation它只保留我声明的值之一,所以如果我说CLLocation *不同位置它执行代码的一部分,但不是奖金位置的那一个。 – hara

+0

如果我为了(i = 0; i = 10; i ++)而在里面放了一个开关:case你认为它会好吗? – hara

+0

请参阅我对答案的编辑。你为什么需要switch语句?您是否为每个地点执行不同的操作? – mjisrawi