1

新しい場所を const で定義された場所と比較するために、インスタンス メソッドの distanceFromLocation を使用しています。

CLLocation *bonuslocation に、関心のある gps ポイントの 1 つであるインスタント値を与えてから、オーディオ ファイルが再生されるポイントからの距離が 20m 未満の場合、それを新しい位置と比較します。

これは1つの場所で完全に機能していますが、ローカルで updatelocationmanager 関数に複数追加するとまったく機能しません..

コード:

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

10 gps ポイントを取得する方法についてアドバイスをいただけますか????

今日は私の誕生日です、誕生日プレゼントとしてそれを見てもらえますか?? ありがとうございました..

4

1 に答える 1

0

ループに入れないのはなぜですか?それとも、10 か所で比較を実行するだけですか? 機能していないというのは具体的にどのようなことですか?

編集:

他の場所を取得する場所について言及したことはないので、何らかの方法でそれらを作成し、それらを配列に格納すると仮定しましょう...

NSArray *locationArray;

あなたのコメントから、場所ごとに異なるサウンドを持っていることがわかりましたか? 簡単な方法は、サウンドを 2 番目の配列に格納することです...

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 に答える