iOS地图->模拟定位

1.在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发
Map Kit :用于地图展示.
Core Location :用于地理定位.

2.热门专业术语

LBS :Location Based Service (基于位置的服务)
SoLoMo :Social Local Mobile(索罗门)(即:Social(社交的)、Local(本地的)、Mobile(移动的),连起来就是SoLoMo(索罗门),社交本地移动,即社交加本地化加移动,它代表着未来互联网发展的趋势。)

3.需要导入头文件
这里写图片描述

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

4.CLLocationManager的常用操作

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

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

/**定位回调的方法*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
locations参数里面装着CLLocation对象

CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
/**经纬度*/
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

/**海拨*/
@property(readonly, nonatomic) CLLocationDistance altitude;
/**路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)*/
@property(readonly, nonatomic) CLLocationDirection course;

/**行走速度(单位是m/s)*/
@property(readonly, nonatomic) CLLocationSpeed speed;

/**计算2个位置之间的距离*/
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location;

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

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

5.经纬度与中国经纬度
这里写图片描述
这里写图片描述
6.CLPlacemark常用操作(地标,封装详细位置信息)

/**地理位置*/
@property (nonatomic, readonly) CLLocation *location;
/**区域*/
@property (nonatomic, readonly) CLRegion *region;
/**详细的地址信息*/
@property (nonatomic, readonly) NSDictionary *addressDictionary;
/**地址名称*/
@property (nonatomic, readonly) NSString *name;
/**城市*/
@property (nonatomic, readonly) NSString *locality;

7.模拟定位事例
7.1导入包这里写图片描述.
7.2.如果是iOS8或者以上的版本需要的在info.plist里面设置如下内容
这里写图片描述
7.3代码部分

#import "ViewController.h"
/**导入定位框架*/
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>/**采用定位代理*/
/**0.创建一个位置*/
@property (strong, nonatomic) CLLocationManager *locMgr;
@end
@implementation ViewController

/**1.懒加载,因为只创建一次,定位管理器*/
- (CLLocationManager *)locMgr{

#warning 2.定位服务不可用,用户取消了以后,返回为空
    if (![CLLocationManager locationServicesEnabled]) return nil;
    if (!_locMgr) {
        /**3.创建定位管理者*/
        self.locMgr = [[CLLocationManager alloc] init];
        /**4.设置代理*/
        self.locMgr.delegate = self;
    }
    return _locMgr;
}
- (void)viewDidLoad {
    [super viewDidLoad];

    /**5.开始定位用户的位置*/
    [self.locMgr startUpdatingLocation];
#warning iOS8里面必须添加这个
    /**6.是否允许你的定位*/
    [self.locMgr requestAlwaysAuthorization];

    /**7.精确度*/
    _locMgr.desiredAccuracy = kCLLocationAccuracyBest;
}
#pragma mark--8.当定位开始时,回调的方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

    /**8.1.取出位置对象,第一个位置,因为第一个准确*/
    CLLocation *loc = [locations firstObject];
    /**8.2.取出经纬度*/
#if 0
    typedef struct {
        CLLocationDegrees latitude;  代表纬度
        CLLocationDegrees longitude; 代表经度
    } CLLocationCoordinate2D;
#endif
    CLLocationCoordinate2D coordinate = loc.coordinate;
    /**8.3.打印经纬度*/
    NSLog(@"%f%f",coordinate.latitude,coordinate.longitude);

    /**4.停止定位,因为这里只需定位用户的最初位置,如果是一直定位的话,不用写下面的话*/
    [self.locMgr stopUpdatingLocation];
}
@end

7.因为上面的事例是模拟定位所以,需要在模拟上设置,选择Apple
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值