码迷,mamicode.com
首页 > 其他好文 > 详细

定位功能(使用系统地图)

时间:2015-09-13 20:01:02      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

1.导入MapKit,CoreLocation库

2.viewController文件

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate>
{
    CLLocationManager *_locationManager;
}
@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    //1.创建locationManager
    _locationManager = [[CLLocationManager alloc] init];
    
    //2.info.plist文件加入字段
    //NSLocationWhenInUseDescription
    //NSLocationAlwaysUsageDescription
    
    if (![CLLocationManager locationServicesEnabled]) {
        NSLog(@"定位服务未打开");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请打开定位服务" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
    
    //3.请求权限(一直允许访问位置信息)
    [_locationManager requestAlwaysAuthorization];
    //程序运行期间允许访问位置信息
    //[_locationManager requestWhenInUseAuthorization];
    
    //4.定位精确度
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    //设置隔多少米后更新位置信息
    _locationManager.distanceFilter = 100;
    _locationManager.delegate = self;
    
    //5.开启定位
    [_locationManager startUpdatingLocation];
}



#pragma mark --CLLocationManagerDelegate---
//权限状态改变
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
    NSLog(@"%i",status);
    //给出相应提示信息
    if (status != kCLAuthorizationStatusAuthorizedAlways) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请设置程序允许访问位置信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
    else
    {
        [_locationManager startUpdatingLocation];
    }
}
//更新到用户位置信息
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *location = [locations firstObject];
    NSLog(@"%f-%f",location.coordinate.latitude,location.coordinate.longitude);
    //反编码
    CLGeocoder *geo = [[CLGeocoder alloc] init];
    [geo reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"%@",error);
    }];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

定位功能(使用系统地图)

标签:

原文地址:http://www.cnblogs.com/liaods/p/4805378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!