一、简单说明
1.CLLocationManager
CLLocationManager的常用操作和属性
开始用户定位- (void)startUpdatingLocation;
停止用户定位- (void) stopUpdatingLocation;
说明:当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法
#import \"YYViewController.h\"
#import <CoreLocation/CoreLocation.h>
//需要遵守CLLocationManagerDelegate协议
@interface YYViewController ()<CLLocationManagerDelegate>
@property(nonatomic,strong)CLLocationManager *locMgr;
@end
@implementation YYViewController
#pragma mark-懒加载
-(CLLocationManager *)locMgr
{
if (_locMgr==nil) {
//1.创建位置管理器(定位用户的位置)
self.locMgr=[[CLLocationManager alloc]init];
//2.设置代理
self.locMgr.delegate=self;
}
return _locMgr;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//判断用户定位服务是否开启
if ([CLLocationManager locationServicesEnabled]) {
//开始定位用户的位置
[self.locMgr startUpdatingLocation];
//每隔多少米定位一次(这里的设置为任何的移动)
self.locMgr.distanceFilter=kCLDistanceFilterNone;
//设置定位的精准度,一般精准度越高,越耗电(这里设置为精准度最高的,适用于导航应用)
self.locMgr.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
}else
{//不能定位用户的位置
//1.提醒用户检查当前的网络状况
//2.提醒用户打开定位开关
}
//测试方法,计算两个位置之间的距离
[self countDistance];
}
#pragma mark-CLLocationManagerDelegate
/**
* 当定位到用户的位置时,就会调用(调用的频率比较频繁)
*/
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
//locations数组里边存放的是CLLocation对象,一个CLLocation对象就代表着一个位置
CLLocation *loc = [locations firstObject];
//维度:loc.coordinate.latitude
//经度:loc.coordinate.longitude
NSLog(@\"纬度=%f,经度=%f\",loc.coordinate.latitude,loc.coordinate.longitude);
NSLog(@\"%d\",locations.count);
//停止更新位置(如果定位服务不需要实时更新的话,那么应该停止位置的更新)
// [self.locMgr stopUpdatingLocation];
}
//计算两个位置之间的距离
-(void)countDistance
{
//根据经纬度创建两个位置对象
CLLocation *loc1=[[CLLocation alloc]initWithLatitude:40 longitude:116];
CLLocation *loc2=[[CLLocation alloc]initWithLatitude:41 longitude:116];
//计算两个位置之间的距离
CLLocationDistance distance=[loc1 distanceFromLocation:loc2];
NSLog(@\"(%@)和(%@)的距离=%fM\",loc1,loc2,distance);
}
@end
本文地址:https://www.stayed.cn/item/22431
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我