首先,我對iOS Dev和Objective-C非常陌生。所以請原諒任何愚蠢的問題或代碼。iOS位置管理器多次觸發
我一直在iPhone上測試位置服務。我有這樣的代碼,通過的NSTimer發射了:
- (void)startLocationTracking
{
if(self.locationManager==nil){
_locationManager=[[CLLocationManager alloc] init];
_locationManager.delegate=self;
_locationManager.desiredAccuracy=kCLLocationAccuracyBest;
_locationManager.distanceFilter=1;
self.locationManager=_locationManager;
}
if([CLLocationManager locationServicesEnabled]){
[self.locationManager startUpdatingLocation];
}
}
這裏是我的位置管理器功能:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
[self timerLog];
NSString *deviceID = [self getUUID];
double lat = newLocation.coordinate.latitude;
double lon = newLocation.coordinate.longitude;
double alt = newLocation.altitude;
double dir = newLocation.course;
double spd = newLocation.speed;
double ha = newLocation.horizontalAccuracy;
double va = newLocation.verticalAccuracy;
NSDateFormatter *formatter;
NSString *ts;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
ts = [formatter stringFromDate:[NSDate date]];
[self geoTrackingWS :deviceID :lat :lon :alt :dir :spd :ha :va :ts];
[manager stopUpdatingLocation];
}
出於某種原因,我的功能geoTrackingWS
被多次隨意射擊了。 NSTimer每1分鐘運行一次(就像測試一樣),有時它可以正常工作,它只需要調用geoTrackingWS
一次,但其他時間只需要2到3次。
我已經做了日誌記錄,我可以看到我的NSTimer工作正常,並且因爲它應該發射。
我有一種感覺,它與我的手機上的另一個應用程序有關,但我不確定。
對此的任何幫助或見解都會很棒。
感謝
因爲有時會檢查全部3個,所以我可能會達到3點嗎?這可能是爲什麼我的geoTrackingWS函數在1到3次的任何地方運行? – Sequenzia
是的,絕對。在iPhone上(有三個傳感器,有些設備只有一個),可以想象你會得到三個估計值。每個新的應該比以前更準確 - 嘗試記錄水平和垂直精度,看看是否是這樣。 – Tommy
感謝您的幫助。我認爲這就是它。我結束了抓住最後一個,它似乎運作良好,它更準確。謝謝。 – Sequenzia