美文网首页
CLLocation

CLLocation

作者: 翻这个墙 | 来源:发表于2017-11-23 10:24 被阅读76次

CLLocation(位置)

  • 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;

CLLocation(位置)常用方法

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

3. 场景演练

1. 场景演示:打印当前用户的行走方向,偏离角度以及对应的行走距离,
    例如:”北偏东30度方向,移动了8米”
2. 实现步骤:
    1> 获取对应的方向偏向(例如”正东”,”东偏南”)
    2> 获取对应的偏离角度(并判断是否是正方向)
    3> 计算行走距离
    4> 打印信息
        // 1.取出位置,建议取出最后一个,因为最后一个最准确
        guard let location = locations.last else {return}

        // 2.判断位置是否可用
        if location.horizontalAccuracy < 0 {return}

        // 3.判断航向是否可用
        if location.course < 0 {return}


//         场景演示:打印当前用户的行走方向,偏离角度以及对应的行走距离,
//        例如:”北偏东 30度方向,移动了8米”

        // 确定方向
        let angleStrs = ["北偏东", "东偏南", "南偏西", "西偏北"];
        let index = Int(location.course / 90)
        var angleStr = angleStrs[index]

        // 确定偏移角度
        let angle = location.course % 90

        if Int(angle) == 0 {
            // swift
//            let index = angleStr.startIndex.advancedBy(1)
//            angleStr = "正" + angleStr.substringToIndex(index)

            // OC
            angleStr = "正" + (angleStr as NSString).substringToIndex(1)
        }

        // 计算移动了多少米
        let lastLoc = lastLocation ?? location
        let distance = location.distanceFromLocation(lastLoc)
        lastLocation = location

        // 拼接字符串,并打印
        if Int(angle) == 0 {
             print("\(angleStr), 移动了\(distance)米")
        } else {
             print("\(angleStr) \(angle)角度, 移动了\(distance)米")
        }

4. 注意事项

  1. 使用位置前, 务必判断当前获取的位置是否有效
    • 如果水平精确度小于零, 代表虽然可以获取位置对象, 但是数据错误, 不可用
if (location.horizontalAccuracy < 0) return;

相关文章

网友评论

      本文标题:CLLocation

      本文链接:https://www.haomeiwen.com/subject/wmoavxtx.html