将GPS点与当前位置进行比较

时间:2011-08-13 08:27:59

标签: iphone events gps cllocation

我使用实例方法distanceFromLocation来比较我的新位置和const定义的位置

我给CLLocation * bonuslocation一个即时值,这是我感兴趣的gps点之一,然后我将它与新位置进行比较 如果距离播放音频文件的距离小于20米。

虽然这对一个地方完美无缺,但根本不起作用 如果我在本地添加updatelocationmanager函数多个..

代码:

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

我可以就如何以10 gps积分来做一些建议????

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

1 个答案:

答案 0 :(得分: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]
        }
    }
}

虽然我不建议只播放声音,因为这个简单的逻辑会导致声音在阈值内同时播放一次。