zoukankan      html  css  js  c++  java
  • iOS开发-Core Location和Map Kit

    一、Core Location确定物理位置

    利用以下3种技术:

    1、GPS(最精确的)

    2、蜂窝基站ID定位(cell ID Location)

    3、WPS(Wi-Fi Positioning Service,Wi-Fi定位服务)

    这3种方法都很耗电,使用Core Location时要注意这一点,尽量只在必要时进行定位。使用时,我们可以根据需要指定精度。注意,在指定绝对最低精度级别时要谨慎,避免不必要的电力消耗。

    Core Location所依赖的技术对于应用来说是隐藏的。我们不需要指定哪种技术,只需要指定精度级别,它就会自动从可用的技术中选择可以更好满足请求的那种。

    二、如何使用Core Location API?

    (一)创建位置管理器

    使用到的主类是CLLocationManager

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];

    (二)设置精度

    避免指定任何大于绝对需要的精度

    精度通过设定CLLocationAccuracy的值进行指定,类型为双浮点型,单位为米(m)

    示例:

    // 设置委托

     locationManager.delegate = self;

    // 请求特定精度级别

    locationManager.desireAccuracy = KLLocationAccuracyBest;

    如果指定的desireAccuracy的值为10,就表示要求Core Location在尝试确定当前位置时尽量达到10米的精度。

    其他指定精度的方法

    KLLocationAccuracyBestForNavigation

    KLLocationAccuracyNearestTenMeters

    KLLocationAccuracyKilometer

    KLLocationAccuracyThreeKilometer

    (三)设置距离筛选器

    默认情况下,位置管理器会把检测到的位置更改通知给委托。指定距离筛选器意味着告知位置管理器不要将每个更改都通知你,仅当位置更改超过特定大小时通知。

    如设置1000米

    locationManager.distanceFilter = 1000.;

    如果希望位置管理器恢复为没有赛选器的默认设置

    locationManager.distanceFilter = KCLDistanceFilterNone;

    (四)获取使用定位服务的权限

    (五)启动位置管理器

    [locationManager startUpdatingLocation];

    (六)合理使用位置管理器

    如果只需要确定当前位置而不需要持续更新,那么获取完当前位置信息后应该让委托停止位置管理器。如果需要轮询,则需要确保在肯能的情况下停止轮询。

    [locationManager stopUpdatingLocation];

    (七)获取位置更新

    使用locationManager:didUpdateLocations方法。该方法接受两个参数

    1、调用改方法的位置管理器

    2、一个CLLocation对象数组,用于描述设备的当前位置,可能还有之前的几个位置。无论何时,数据的最后一项都表示当前位置。

    (八)使用CLLocation获取位置信息

    该类有应用可能感兴趣的6个属性:

    1、coordinate(地理坐标)—>(latitude)纬度和(longitude)纬度

    2、horizontalAccuracy(水平精度)

    3、altitude(海拔高度)

    4、verticalAccuracy(垂直精度)

    5、floor(地面)

    6、timestamp(时间戳)

    示例:

    CLLocation latitude = theLocation.coordinate.latitude;

    (九)错误通知

    如果Core Location需要向应用程序报告错误,则调用locationManager:didFailWithError:的委托方法。

    1、用户拒绝访问:调用并传递kCLErrorDenied错误代码。

    2、无法确定位置:kCLErrorLocationUnknown

    kCLErrorLocationUnknown错误表示是问题可能是临时的,而kCLErrorDenied或其他错误可能表示在当前会话的其余时间内,应用都将无法访问Core Location

    3、网络相关错误:kCLErrorNetwork

  • 相关阅读:
    PDF怎么转换为CAD文件?这两种方法你的会
    这可能最简单的一种PS图片特效,零基础小白教程
    CAD打印图纸要怎么操作?简单方法分享给你
    CAD画三维图怎么渲染?一分钟教你快速操作
    CAD绘图效率低?教你4个CAD绘图技巧,绘图效率提升十倍
    在CAD中进行圆角标注的方法
    CAD总记不住?设计达人给你支招,最强口诀40条玩转设计
    MATLAB的数据类型
    IDEA 2019 安装包及安装教程
    python——正则表达式
  • 原文地址:https://www.cnblogs.com/jierism/p/5745724.html
Copyright © 2011-2022 走看看