[IOS]IOS8下地图定位的使用方法

来源:互联网 发布:支付宝绑定淘宝账户 编辑:程序博客网 时间:2024/06/05 05:35

和ios7比较,稍微增加了些变动


1.Info.plist表里面添加两个变量

NSLocationAlwaysUsageDescription

NSLocationWhenInUseUsageDescription

首先这2个字段没有特别的意思,可以理解为使用定位时候的提示语


添加之后在h文件:

#import <UIKit/UIKit.h>#import <CoreLocation/CoreLocation.h>#import "Corelocation/CLLocationManagerDelegate.h"@interface MapViewController : UIViewController<CLLocationManagerDelegate>@property (strong, nonatomic)    CLLocationManager* locationManager;@property (weak, nonatomic) IBOutlet UITextField *longitudeText;@property (weak, nonatomic) IBOutlet UITextField *latituduText;- (IBAction)findme:(id)sender;@end

m文件中:

- (void)viewDidLoad {    [super viewDidLoad];      _locationManager = [[CLLocationManager alloc]init];    _locationManager.delegate = self;    [_locationManager requestAlwaysAuthorization];    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;    _locationManager.distanceFilter = kCLDistanceFilterNone;       }-(void)viewWillAppear:(BOOL)animated{        [super viewWillAppear:animated];       [self.locationManager startUpdatingLocation];//定位是需要不断的请求当前的位置,放在willappear最适合}-(void)viewWillDisappear:(BOOL)animated{        [super viewWillDisappear:animated];       [self.locationManager stopUpdatingLocation];}


另外相较于ios8之前的地图定位,还要调用代理:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {    switch (status) {        case kCLAuthorizationStatusNotDetermined:            if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {                [_locationManager requestWhenInUseAuthorization];            }            break;        default:            break;    }}


调用完成后,其他方法和ios7一样

  - (void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation    {    _latituduText.text = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.latitude];    _longitudeText.text = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.longitude];      [_locationManager stopUpdatingLocation];    NSLog(@"location ok");             }
显示所获得的坐标信息


0 0