1

我正在使用实例方法 distanceFromLocation 将我的新位置与 const 定义的位置进行比较

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

虽然这对于一个位置非常有效,但如果我在本地添加到 updatelocationmanager 函数中不止一个,它根本不起作用。

编码:

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

我可以就如何为 10 gps 点提供一些建议吗????

今天是我的生日,你能把它当作生日礼物吗??谢谢..

4

1 回答 1

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]
        }
    }
}

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

于 2011-08-13T09:32:04.077 回答