2011-07-08 69 views
1

我瀏覽了一些stackoverflow中的問題,但無法獲得清晰的圖像。我正在研究一個iPhone應用程序,該應用程序涉及通過GPS獲取用戶位置,並根據我獲得的價值進行處理。我只是想確保我應該如何實現這一點?使用這種方法:iphone按時間間隔獲取用戶位置

[locationManager startUpdatingLocation] 

給我的準確位置,但它不斷更新,我經常不想。我希望定期獲得用戶的位置,例如每2分鐘一次。我如何實現?

我想的方法(10秒間隔):

- (void)viewDidLoad { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(theActionMethod) userInfo:nil repeats:YES]; 
} 

和在定時器的動作方法:

- (void)theActionMethod { 
    [locationManager startUpdatingLocation]; 
} 

和方法didUpdatetoLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    self.startingPoint = newLocation; 
    NSString *latitudeString = [[NSString alloc] initWithFormat:@"%g\u00B0", newLocation.coordinate.latitude]; 
    NSLog([@"Latitude : " stringByAppendingString:latitudeString]); 
    [latitudeString release]; 
    [locationManager stopUpdatingLocation]; 
} 

現在我得到的價值始終保持不變。每10秒鐘更新位置,但所有值保持不變(我嘗試打印經度,水平精度,高度,垂直精度等)。所以,請幫助我如何獲得每2分鐘確切的(至少有點準確,因爲我知道GPS不準確)用戶的位置。

而且我也想知道如何實現monitoringRegions和significantlocationchange事情。有沒有人成功實施它?我做不到。我沒有注意到任何改變(我在didEnterRegion中打印了一些東西,即使當我來回進出該區域時也從未打印過)。提前致謝。

+0

這是兩個問題;你應該問兩個不同的問題。而你的監控區域太籠統 - 什麼都不起作用? 現在,回到你的主要問題:你是否在汽車/火車/巴士/飛機/船上測試這個,以便實際的位置每10秒會改變一次?如果您只是坐在辦公桌前,則GPS位置每次都是相同的(初始置零後)。 – Rayfleck

+0

我應該問它作爲2個問題。無論如何,我不知道監控區域是如何工作的。就像它更新的頻率一樣?在移動的同時,考慮我們在10秒內穿越該地區(10秒內進入和退出),它會通知我嗎?我正在進出我的近似監測區域進行測試。 – Goku

+0

你期望什麼水平的準確性?我不知道確切的限制,但100米可能接近。換句話說,GPS將無法確定(準確)您只移動了75米。 – Rayfleck

回答

2

只要做同樣的事情,你已經在做。只要忽略代表方法並將theActionMethod:更改爲使用locationManager.location屬性即可。

+0

嗨,只是想知道更多關於工作..所以你打算說,委託方法可以被刪除,只需使用'locationManager.location'獲取'theActionMethod'中更新的位置值?你能指點我的任何資源,這將幫助我學習這樣做,否則,如果你可以編輯如何做到這一點會很好。謝謝。 – iSeeker