美文网首页
iOS地图定位

iOS地图定位

作者: 纳木错_grace | 来源:发表于2016-07-05 20:23 被阅读119次

一、定位。
1),iOS8以后,请求定位时候,需要在info.plist文件里加入一个字段。
//NSLocationAlwaysUsageDescription(一直定位,后台的也能定位)
//NSLocationWhenInUseUsageDescription(使用的时候定位)
2),如果需要使用定位,需要导入CoreLocation框架。

import <CoreLocation/CoreLocation.h>

遵守代理<CLLocationManagerDelegate>
_locationManager.delegate = self;

初始化定位管理器


    _locationManager = [[CLLocationManager alloc] init];
    //在ios8以后,请求定位需要调用下面的方法
    //做版本判断是因为低版本调用高版本的方法,会出现崩溃
    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
        //一直定位
        [_locationManager requestAlwaysAuthorization];
        //用时定位
        [_locationManager requestWhenInUseAuthorization];
    }
    //当用户移动50米时,会调用一次代理方法[定位一次]
    
    _locationManager.distanceFilter = 50;
    //设置定位的精确度,精确度越高,越费电
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

实现代理方法

    。
//授权结果
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
    if (status == kCLAuthorizationStatusNotDetermined) {
        NSLog(@"等待用户授权");
    }else if(status == kCLAuthorizationStatusAuthorizedAlways ||
             status == kCLAuthorizationStatusAuthorizedWhenInUse){
        NSLog(@"授权成功");
        //开始更新用户的位置信息,一旦调用了这个方法,就会不断地获取用户的位置信息
        [_locationManager startUpdatingLocation];
        
    }else{
        NSLog(@"授权失败");
    }
}
//定位成功
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
    //数组中最后的元素是最新的定位
    //拿到用户最新的位置信息
    //按时间排序,如果想要拿到最新的位置信息,如果想要拿到最新的位置信息,直接拿到最后一个
    CLLocation *currentLocation = [locations lastObject];
    //把最新的位置信息赋值给_location
    _location = currentLocation;
    
    //比如:获取用户所在的城市,只需要一次
    //停止更新用户的位置信息
//    [manager stopUpdatingLocation];
}

//定位失败
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
    
    NSLog(@"失败");
    NSLog(@"%@",error.userInfo);
}

正向地理编码

地址转换为经纬度称为正向地理编码

//创建编码对象
 CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
    //正向地理编码
    NSString *str = @"地址字符串";
    [geoCoder geocodeAddressString:str completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (placemarks.count == 0) {
            return ;
        }
        CLPlacemark *placeMark = [placemarks lastObject];
       
        NSLog(@"纬度%lf",placeMark.location.coordinate.latitude);
        NSLog(@"经度%lf",placeMark.location.coordinate.longitude);
    }];

反向地理编码

将经纬度转换成详细的地址。

//创建编码对象
    CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
    //反向地理变量    
//_location :一个地理位置的
    [geoCoder reverseGeocodeLocation:_location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (placemarks.count == 0) {
            return ;
        }
        //地标  里面封住了详细的地址信息
        CLPlacemark *placeMark = placemarks[0];
        NSLog(@"%@",placeMark.addressDictionary);
        //addressDictionary  详细的位置信息
    }];

通过两个地理位置计算之间距离

CLLocation *location1 = [[CLLocation alloc] initWithLatitude:34.772108 longitude:113.675915];
    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:34.772478 longitude:113.678005];
    
    //计算两个经纬度之间的距离 单位是米
    CLLocationDistance distance = [location1 distanceFromLocation:location2];

相关文章

  • IOS地图定位导航

    title : IOS地图定位导航category : UI 地图定位导航 标签(空格分隔): IOS 概述 I...

  • iOS地图和定位

    iOS地图定位 本文发布在http://he8090.cn/2016/07/18/地图与定位/ 导入地图框架 1、...

  • 地图与定位

    OCiOS开发:地图与定位 - 李鴻耀 - 博客频道 - CSDN.NET iOS开发之地图-定位/...

  • iOS Mapkit的使用

    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...

  • iOS百度地图使用时的注意问题

    iOS使用百度地图时会发现,API本身不带定位功能的,定位是通过iOS系统自身的定位实现的,百度地图API只是封装...

  • iOS 地图定位-地图

    地图 准备工作 导入MapKit框架(iOS5之后不在需要程序员自己导入) 导入主头文件#import MapKi...

  • iOS 地图定位-定位

    定位 常用方法的介绍 CLLocationManager位置管理器,我们的有关于位置的方法和属性都是通过它来管理设...

  • iOS 地图

    iOS 地图 基础 一 :定位 在 iOS 程序开发中 地图功能是普遍存在的,刚好最近都在研究地图的功能。总结一下...

  • 获取定位信息

    ios官方定位插件 百度地图定位Cordova插件,支持Android,IOS,ionic 1x 2x 均可使用(...

  • 定位及耗电

    iOS-GPS定位基础知识 iOS -GPS定位服务和地图应用是两套完全不同的API iOS7 的四种定位服务-G...

网友评论

      本文标题:iOS地图定位

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