地图与定位

本文介绍了iOS开发中地图与定位的使用,包括Core Location的基础操作如定位用户、地理编码,以及MapKit的运用,如显示用户位置、设置地图类型和自定义大头针。通过LBS和SoLoMo概念,阐述了地图定位在移动应用中的重要性,并详细讲解了相关框架和关键类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地图与定位

标签(空格分隔): UI补充


地图与定位

在移动互联网时代我们可以去依靠手机上的地图导航区陌生的地方,也可用利用团购的app搜索最近的找餐馆、找酒店、找银行、找电影院……。
- LBS :Location Based Service
- SoLoMo :Social Local Mobile(索罗门)
上面的功能都都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发
- Map Kit :用于地图展示
- Core Location :用于地理定位

Core Location的基本使用

  • 从iOS 6开始,苹果在保护用户隐私方面做了很大的加强,以下操作都必须经过用户批准授权
    • 获得用户的位置
    • 访问用户的通讯录、日历、相机、相册等等
  • 当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户授权

    一旦用户选择了“Don’t Allow”,意味着你的应用以后就无法使用定位功能

  • 开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的

简单使用

  • 导入框架

  • 导入主头文件
    #import <CoreLocation/CoreLocation.h>

    • CoreLocation框架使用须知
      • CoreLocation框架中所有数据类型的前缀都是CL
      • CoreLocation中使用CLLocationManager对象来做用户定位
CLLocationManager
  • CLLocationManager的常用操作

    • 开始用户定位
      - (void)startUpdatingLocation;

    • 停止用户定位
      - (void) stopUpdatingLocation;

    • 当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法
      - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;

    • 每隔多少米定位一次
      @property(assign, nonatomic) CLLocationDistance distanceFilter;

    • 定位精确度(越精确就越耗电)
      @property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

- (void)viewDidLoad {
    [super viewDidLoad];

    // 1.获取用户的授权状态(iOS7只要使用到定位,就会直接请求授权)
    CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
    if (status == kCLAuthorizationStatusNotDetermined) {

        if ([self.mgr respondsToSelector:@selector(requestAlwaysAuthorization)]) {
            [self.mgr requestAlwaysAuthorization];
        }
    }
    // 2.开始定位(当调用该方法,系统就会不停的更新用户的位置)
    [self.mgr startUpdatingLocation];
}

#pragma mark - 懒加载
- (CLLocationManager *)mgr
{
    if (_mgr == nil) {
        self.mgr = [[CLLocationManager alloc] init];

        // 设置代理,在代理方法中可以拿到用户的位置
        self.mgr.delegate = self;

        // 设置定位的精度(精度越高越耗电)
        self.mgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

        // 设置当用户移动的时候,重新来定位
        self.mgr.distanceFilter = 10.0;
    }
    return _mgr;
}
CLLocation
  • CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
    @property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值