2012-06-09 57 views

回答

2

我不相信有辦法做到這一點。你可以開始更新,然後在didUpdateToLocation禁用它們,所以你只能得到一個。

+0

之後可以重新啓動嗎? –

+0

是的,它會在獲得一個位置後關閉。 – ACBurk

+1

您可以通過調用'-startUpdatingLocation'和'-stopUpdatingLocation'方法來啓動和停止它。 – skram

1

停止位置服務時,你有位置成功

1

你不能。硬件(收音機等)速度不夠快。相反,在你需要一個位置之前,你必須先調用startUpdatingLocation方法,然後等待收音機按照你的需要得到一個精確的修復(前幾個位置回調可能不是很準確或不如以後的回調) 。然後,如果您長時間不需要它們以幫助節省電池壽命,則可以停止位置更新。

1

正如我在評論中所建議的,您可以隨意使用-startUpdatingLocation-stopUpdatingLocation的組合,如果您在接收到位置更新時停止更新,它將不會繼續,除非您再次啓動它。示例如下:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

    //Store your new location before stopping updates. 

    [manager stopUpdatingLocation]; 
} 

現在,當您想要在應用程序的某個其他時間檢索新位置時。不用擔心它更新的頻率,因爲它只會一次。

[locationManager startUpdatingLocation]; 

希望這是有道理的,並幫助!

1

當您調用startUpdatingLocation方法時,它將首先返回緩存點。因此,在代理方法didUpdateToLocation中,您應該檢查該位置的準確性。如果它不在可接受範圍內,則應忽略該位置。你應該繼續獲取位置,直到點落在可接受的範圍內。一旦收到此類信息,您應該致電stopUpdatingLocation

+0

如何檢查該地點的準確性? –

+0

請參閱http://stackoverflow.com/questions/4635938/cllocationmanager-and-accuracy-issues-any-experiences – Apurv

+0

檢查年齡,而不是準確性。它可能是準確的,但很舊(緩存)。 – progrmr

相關問題