標籤:des style blog class code c
今天分到個小任務,就是擷取經緯度,本來以為很簡單,但是竟然搞了好幾個小時,擦,原來xcode5以後原來sdk.60的定位方法都不能用了,我上網查了好多資料,結果都是坑,不是少了什麼變數,就是打斷點無法進入方法,最好火大了,仔細研究了一下SDK文檔,再結合網上的方法,寫了這一個簡單的擷取經緯度的方法,大家看看就好。
首先要匯入CoreLocation.Frame 包
.h 檔案
?
| 1 2 3 4 5 6 7 8 9 |
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController : UIViewController<CLLocationManagerDelegate> @property (nonatomic, retain) CLLocationManager* locationMgr; @property (nonatomic, retain) CLGeocoder* clGeocoder;// iso 5.0及5.0以上SDK版本使 @end |
.m 檔案
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.locationMgr = [[CLLocationManager alloc] init]; //設定代理 self.locationMgr.delegate = self; // 設定定位精度 // kCLLocationAccuracyNearestTenMeters:精度10米 // kCLLocationAccuracyHundredMeters:精度100 米 // kCLLocationAccuracyKilometer:精度1000 米 // kCLLocationAccuracyThreeKilometers:精度3000米 // kCLLocationAccuracyBest:裝置使用電池供電時候最高的精度 // kCLLocationAccuracyBestForNavigation:導航情況下最高精度,一般要有外接電源時才能使用 self.locationMgr.desiredAccuracy = kCLLocationAccuracyBest; // distanceFilter是距離過濾器,為了減少對定位裝置的輪詢次數,位置的改變不會每次都去通知委託,而是在移動了足夠的距離時才通知委託程式 // 它的單位是米,這裡設定為至少移動1000再通知委託處理更新; self.locationMgr.distanceFilter = 1000.0f; //開始定位 [self.locationMgr startUpdatingLocation]; } // iso 6.0以上SDK版本使用,包括6.0。 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *cl = [locations objectAtIndex:0]; NSLog(@"緯度--%f",cl.coordinate.latitude); NSLog(@"經度--%f",cl.coordinate.longitude); } //擷取定位失敗回調方法 #pragma mark - location Delegate - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"Location error!"); } @end |
要用真機進行測試,輸出結果如下:
有更好的辦法歡迎大家指教。