定位的使用实例


#import "ViewController.h"


//使用定位之前导入CoreLocation框架

#import <CoreLocation/CoreLocation.h>


@interface ViewController ()<CLLocationManagerDelegate>

{

    //定位使用的类CLLocationManager

    CLLocationManager *manager;

    

}

@end



/**

 *  

 1.LBS:Location Based Service (基于定位的服务)位置服务

 2.苹果提供框架:CoreLocation框架进行定位,可以独立使用;CoreLocation中主要包含了定位,地理编码,反地理编码功能;

 3.地理编码:通过地理位置的字符串,得到关于位置的相关信息(经度,维度,海拔)

 

   反地理编码:通过经纬度得到字符串具体位置的地名

 

 4.CLCoreLocation这个类里面封装了位置和高度信息

 

 5.本初子午线:穿过英国伦敦格林文治天文台;东西经各180,共计360,东经正数,西经负数;赤道为零度纬度,南北纬各90,共计180

 

 6.iOS代码中使用CLLocationCoordinate2D 来表示经纬度

 typedef struct {

CLLocationDegrees latitude; 纬度

CLLocationDegrees longitude; 经度

 } CLLocationCoordinate2D;

 

 

 

 7.使用定位之前,判断用户是否打开了定位服务 locationServicesEnabled;向用户说明为什么使用定位(苹果会自动弹出一个弹出框,提示用户需要使用定位服务(第一次使用软件的时候));

 

   iOS8以下,由于位置信息 是用户的隐私  需要用户去授权  系统会自动弹出一个对话框让用户授权

 Info.plist中设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)key 写为什么让用户 打开定位

 

 ios8使用定位需在pilst里面添加NSLocationWhenInUseUsageDescription

 NSLocationAlwaysUsageDescription

 获取用户的授权

 

 

 */

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //用户是否打开了定位服务

    BOOL isOpen = [CLLocationManager locationServicesEnabled];

  

    if ( !isOpen ) {

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"请再设置中打开定位服务" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

        [alert show];

        return ;

    }

    

    

    //初始化定位的服务对象

    manager = [[CLLocationManager alloc]init];

    

    //infoPlist里面设置key value的时候一定要与代码里面一致

    //一直使用定位功能

    //[manager requestAlwaysAuthorization];

    

    //当使用时启用定位服务

    [manager requestWhenInUseAuthorization];

    

//使用定位服务,耗电量大;使用完定位服务,需要关闭定位服务(节省电量)

  

// 让系统帮助管理定位的开关

    manager.pausesLocationUpdatesAutomatically = YES;

//设置定位服务的精准度,越精准越耗电

//1.GPS 2.WIFI 3.蜂窝数据网罗络,被苹果封装到了底层

    

    /*extern const CLLocationAccuracy kCLLocationAccuracyBest;

    extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;

    extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;

    extern const CLLocationAccuracy kCLLocationAccuracyKilometer;

    extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;*/

 

    manager.desiredAccuracy =  kCLLocationAccuracyBest;

    

    //多少米去更新一次位置Location

    manager.distanceFilter = 50;//以自身位置为中心,走出设置的范围就会更新Location

    

    //当获取到位置或者更新位置的位置 会调用代理位置

    manager.delegate = self;

}


#pragma mark---代理方法

- (void)locationManager:(CLLocationManager *)manager

     didUpdateLocations:(NSArray *)locations

{

    //locations包含了咱们更新的位置;通过获取数组的最后一个数组元素得到新位置

    NSLog(@"%@",locations);

    CLLocation *curLocation = [locations lastObject];

    

//通过Location获得当前位置的经纬度

    CLLocationCoordinate2D curCoordinate2D = curLocation.coordinate;

//    curCoordinate2D.latitude纬度

//    curCoordinate2D.longitude经度


    

    NSLog(@"经度:%f 纬度:%f",curCoordinate2D.longitude,curCoordinate2D.latitude);

    

    //通过Location获得更新位置的时间(NSdate

    NSDate *updateTime = curLocation.timestamp;

    NSLog(@"%@",updateTime);

    

    //获得当前的速度

    double speed = curLocation.speed;

    NSLog(@"当前行驶速度:%f m/s",speed);

    

    //在室内可以获取在第几楼层(ios8.0以上)

    CLFloor *curFloor = curLocation.floor;

    NSLog(@"@%ld",(long)curFloor.level);

    

    //获得航向 course当前设备前进的方向。该值为表示向北,90°表示向东,180°表示向南,270°表示向西

    CLLocationDirection curDiraction = curLocation.course;

    NSLog(@"%f",curDiraction);

    

    //获得精准度;获得海拔的精准度verticalAccuracy(负数时不能获取海拔精准度)

    CLLocationAccuracy curAccuracy = curLocation.verticalAccuracy;

    NSLog(@"%f",curAccuracy);

    

    //获得海拔高度

    double altitude = curLocation.altitude;

    NSLog(@"海拔:%f",altitude);

    

    //获得行驶的平均速度 ;需要得到两次跟新的

}


- (void)locationManager:(CLLocationManager *)manager

       didFailWithError:(NSError *)error

{

    NSLog(@"%@",error);

}



- (void)viewWillAppear:(BOOL)animated

{

    //开启定位

    [manager startUpdatingLocation];

    

}



- (void)viewWillDisappear:(BOOL)animated

{

    //关闭定位

    [manager stopUpdatingLocation];

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Halcon定位检测是一种图像处理技术,通常用于在工业生产中对指定目标进行定位和检测。该技术使用计算机视觉算法和模型,通过对待检测场景进行图像采集和处理,实现对目标的准确定位和有效检测。 在定位检测实例中,首先需要根据实际需求设定目标的特征和属性,例如大小、形状和颜色等。然后,通过摄像机等图像采集设备对待检测场景进行图像采集。采集的图像数据将传输到计算机中。 接下来,利用Halcon定位检测的功能,对图像进行处理和分析。这包括进行图像预处理、特征提取和模式匹配等步骤。图像预处理用于消除图像中的干扰和噪声,以提高后续处理的准确性。特征提取则是通过从图像中提取目标的特征信息,例如边界、轮廓和纹理等,以便用于后续的定位和检测。模式匹配则是将提取的目标特征与预定的模型进行比对,以确定目标的位置和存在与否。 最后,根据分析和处理的结果,根据预设的规则,判断目标是否存在于图像中,并进行相应的处理和控制。例如,如果目标位置超出了预设的范围,可以发出警告信号或启动相应的自动控制装置。 总的来说,Halcon定位检测实例通过图像采集、图像处理和图像分析等步骤,可以实现对工业生产中的目标进行准确和有效的定位和检测。该技术具有高度自动化、可靠性强和应用广泛等特点,广泛应用于工业自动化和质量控制等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值