2011-08-13 100 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