美文网首页
iOS定位和位置信息获取

iOS定位和位置信息获取

作者: 欲速则不达 | 来源:发表于2016-11-16 08:32 被阅读36次

定位和反查位置信息要加载两个动态库 CoreLocation.framework 和 MapKit.framework 一个获取坐标一个提供反查,可以通过配置NSLocationAlwaysUsageDescription或者 NSLocationWhenInUseUsageDescription来告诉用户使用定位服务的目的,并且注意这个配置是必须的

import "ViewController.h"

import <UIKit/UIKit.h>

import <CoreLocation/CoreLocation.h>

import <MapKit/MapKit.h>

@interface ViewController ()<CLLocationManagerDelegate>

@property (nonatomic, strong) CLLocationManager *locationManager;
@property (nonatomic, strong) UIButton *button;

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.button = [UIButton buttonWithType:UIButtonTypeSystem];
    _button.frame = CGRectMake(0, 100, 100, 30);
    [_button setTitle:@"定位" forState:0];
    [_button addTarget:self action:@selector(_startLocation) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_button];
    }

  • (void)_startLocation {

    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
    self.locationManager.distanceFilter = 10.0f;
    [self.locationManager startUpdatingLocation];
    [self.locationManager requestWhenInUseAuthorization];
    }

实现locationManager的代理方法

  • (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {

    CLLocation *newLocation = locations[0];

    CLLocationCoordinate2D oCoordinate = newLocation.coordinate;
    NSLog(@"经度:%f, 纬度: %f",oCoordinate.longitude,oCoordinate.latitude);
    [self.locationManager stopUpdatingLocation];

    CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
    [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

      for (CLPlacemark *place in placemarks) {
          
          NSDictionary *location = [place addressDictionary];
          
          NSLog(@"国家:%@",[location objectForKey:@"Country"]);
          NSLog(@"城市:%@",[location objectForKey:@"State"]);
          NSLog(@"区:%@",[location objectForKey:@"SubLocality"]);
          
          NSLog(@"位置:%@",place.name);
          NSLog(@"国家:%@",place.country);
          NSLog(@"城市:%@",place.locality);
          NSLog(@"区:%@",place.subLocality);
          NSLog(@"街道:%@",place.thoroughfare);
          NSLog(@"子街道:%@",place.subThoroughfare);
      }
    

    }];
    }

相关文章

网友评论

      本文标题:iOS定位和位置信息获取

      本文链接:https://www.haomeiwen.com/subject/drolpttx.html