我有幾個關於CoreLocation和GPS的問題。iPhone SDK:使用GPS跟蹤用戶位置
首先,核心位置中的哪個方法用於持續獲取用戶當前座標?在什麼時間間隔應該檢索?
其次,應該將這些座標來每次被接收到的時間推入的NSMutableArray,使座標的陣列將代表用戶路徑?
謝謝,只是想開始讓我介意這一點。
我有幾個關於CoreLocation和GPS的問題。iPhone SDK:使用GPS跟蹤用戶位置
首先,核心位置中的哪個方法用於持續獲取用戶當前座標?在什麼時間間隔應該檢索?
其次,應該將這些座標來每次被接收到的時間推入的NSMutableArray,使座標的陣列將代表用戶路徑?
謝謝,只是想開始讓我介意這一點。
一個非常簡化版本:
首先,採用<CLLocationManagerDelegate>
協議在您的.h和#import <CoreLocation/CoreLocation.h>
。
然後在.M走:
- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
CLLocationCoordinate2D here = newLocation.coordinate;
NSLog(@"%f %f ", here.latitude, here.longitude);
}
你-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
方法會ping通每個核心位置有話要說給你,這應該每隔幾秒鐘發生的時間。這些CLLocation對象包含有關準確性的信息,因此您可以在該方法中篩選出好的點。
一定要打電話[locationManager stopUpdatingLocation]
然後[locationManager release]
在某個時刻!
祝你好運!
最好的辦法是閱讀CLLocationManager Class Reference,可鏈接到幾個實例工程。短版本:
delegate
屬性設置爲將接收位置更新的類。CLLocationManagerDelegate
協議。您可以定義什麼範圍是可接受的準確性,以及您希望接收自動更新的頻率(基於距離最後一點機制的距離)。您也可以關閉位置管理器,並隨時通過定時器的使用將其恢復。
至於保存位置來建立路徑,其並不那麼簡單。您將不斷獲得GPS位置,直到達到所需的準確度,並且對於未來的任何點,您可能會在獲得良好位置之前得到多個不準確的位置。所以建立這些點的列表基本上只是他們的路徑列表,以及許多額外的點。 你可以通過只保存那些有你想要的準確性的點來解決這個問題,但是在這方面它是一個不完美的世界。
我會建議你把兩個列表最好的情況,一個是路徑,另一個是的,你是在比較,直到你得到一個高度精確的位置,然後把你的路徑列表上的位置運行列表。 一些示例項目沿着這些方向行事,請檢查它們。
你必須做到以下幾點:
忘掉1.如果你沒有互聯網,你將無法獲得設備的座標。至少不是沒有用戶按下「發送」。沒有用戶交互,iOS不允許發送短信。 – 2012-09-29 22:58:46
我可能是錯的,應該:的NSLog(@ 「%F%F,%@」,here.latitude,here.longitude);不是:NSLog(@「%f%f」,here.latitude,here.longitude); – fuzzygoat 2010-05-20 14:11:11
哦,絕對正確。這會給你一個BAD_ACCESS錯誤。糾正。 – 2010-05-21 12:32:07
即使應用程序已最小化,更新位置報價器是否也能正常工作? – kmehta 2011-06-14 14:57:46