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


    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
  • 相关阅读:
    UITextField小结
    由iPhone项目生成iPad项目
    ios界面动画小结
    UIImagePickerController Class
    Xcode调试相关小结
    cocos2d简易引导
    python 多个装饰器组合应用,实现面向切面之AOP编程
    python 元类型编程, 单例模式SingleTon的一种实现方式
    python 实现简单的PerformanceCountCallHandler装饰器
    wxpython 之 GDI(二)
  • 原文地址:https://www.cnblogs.com/liaods/p/4805378.html
Copyright © 2020-2023  润新知