新普金娱乐网址


HTML5地理 & CSS3的新交互个性

【西藏·九寨沟】趁未来,去做想做的事,去见想见的人

马拉松带来了如何?

  • 二月 22, 2019
  • 地理
  • 没有评论

二〇一六.01.02,跑完人生第2场马拉松——浦那马拉松。作者晓得了,从此世界上唯有两种人:跑过马拉松的,没有跑过马拉松的。

正文并非最后版本,若是想要关切更新或改良的情节请关心文集,联系格局详见文末,如有大意和疏漏,欢迎指正。

有人说:“没有何是一场马拉松化解不了的,如果有,就再跑一场”。也有人说:“不管跑多少个马拉松,也拯救不断狼狈的你”。还有人说:“跑马拉松的都以有传说的人”。


如若觉得跑马拉松可以令人脱胎换骨,成为人生赢家,那不如去烧香拜佛。跑步带给大家的已经够多了,它不是巫术,不可以兑现我们拥有的心愿。假诺认为马拉松毫无意义,浪费时间浪费金钱,那那样多跑者全球去跑马拉松,是脑子卓殊么?

正文相关目录:
================== 所属文集:【iOS】07
设备工具
==================
7.4 定位服务->1.0 简介
7.4 定位服务->2.1.1 定位 – 官方框架CoreLocation:
请求用户授权

7.4 定位服务->2.1.2 定位 – 官方框架CoreLocation:
CLLocationManager地方管理器

7.4 定位服务->2.1.3.1 定位 – 官方框架CoreLocation
作用1:地理定位

7.4 定位服务->2.1.3.2 定位 – 官方框架CoreLocation
功用2:地理编码和反地理编码

7.4 定位服务->2.1.3.3 定位 – 官方框架CoreLocation
功效3:区域监听

7.4 定位服务->2.1.4 定位 – 官方框架CoreLocation
案例:指南针效果

7.4 定位服务->2.2 定位 –
locationManager框架

7.4 定位服务->3.1 地图框架MapKit功用1:地图显示
7.4 定位服务->3.2 地图框架MapKit效用2:路线规划(导航)
7.4 定位服务->3.3 地图框架MapKit成效3:3D视图
7.4 定位服务->3.4 地形图框架MapKit功用4:地图截图
7.4 定位服务->3.5 地图框架Map基特功效5:POI检索
================== 所属文集:【iOS】07
设备工具
==================

跑马拉松终究能给大家带来怎么着吧?


01

原则性目录:

坚持

合法框架CoreLocation目录:

最困难的,不是头破血流,而是在您不分明将来,还没来看希望,但仍持有采纳权的时候。

稳定的效果完结:


跑马拉松最痛心的地点也在此处,跑到30㎞左右的时候,已经用尽全力,跑出每一步都很惨痛,但还要,每一步都更近乎极限。每一场马拉松,都会经历这些“绝望——百折不挠——成功”的长河,每叁遍都赢了(除非真的退赛)。

地理定位的步子:


坚定不移是社会风气上最宏伟的人头。报名下三个马拉松的时候,会督促协调咬牙跑步。同时,也会将陶冶贯彻到底。距离不当先10㎞必然会拔取跑步恐怕出游。

详细座谈下步骤5

02

iOS 8.0- 的定位

勾选后台方式,图解:

欲望

代码2:

编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0

info.plist 文件配置.png

重重人说:笔者只想跑完1次马拉松,然后就不跑了。很几个人都食言了。几人说:笔者下一遍再报全马小编就是傻逼。几个人最后甘愿做傻逼。

【OC语言】
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>   // 代理
@property(nonatomic, strong) CLLocationManager *locationM; // 位置管理者
@end

@implementation ViewController

#pragma mark - 懒加载对象,并在懒加载方法中进行部分初始化操作
- (CLLocationManager *)locationM {
    if (!_locationM) {
        // 1. 创建位置管理者
        _locationM = [[CLLocationManager alloc] init];

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        _locationM.delegate = self;

        // 3.前台定位,后台定位(在info.plist文件中配置对应的key)

        // 4. 设置定位的过滤距离(单位:米), 表示用户位置移动了x米时调用对应的代理方法
        _locationM.distanceFilter = 500; //在用户位置改变500米时调用一次代理方法

        // 5. 设置定位的精确度 (单位:米),(定位精确度越高, 越耗电, 定位的速度越慢)
        _locationM.desiredAccuracy = kCLLocationAccuracyBest;
    }
    return _locationM;
}

#pragma mark - 点击屏幕,开始更新用户位置
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    // 判断定位服务是否开启
    if ([CLLocationManager locationServicesEnabled]) {
        NSLog(@"已经开启定位服务,即将开始定位...");

#pragma mark - 开始定位
        [self.locationM startUpdatingLocation];
    } else {
        NSLog(@"没有开启定位服务");
    }
}

#pragma mark - 代理方法:当位置管理器获取到用户位置后,就会调用此方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

    NSLog(@"位置信息:%@", locations);

    // 停止定位(代理方法一直调用,会非常耗电,除非特殊需求,如导航)
    [manager stopUpdatingLocation];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

马拉松,只会让心越跑越野。野,就是欲求未满。跑马拉松的人,心里永远缺了一点,缺了一块在心头要拼成周详的拼图。跑完中国随后想跑全球,跑完全世界之后又不再满足于42.195㎞的马拉松,开端想进军越野赛,一级马拉松甚至是铁人三项。

【Swift语言】
import UIKit
import CoreLocation

class ViewController: UIViewController {

    // 懒加载
    lazy var locationM : CLLocationManager = {

        // 1. 创建位置管理者
        let locationM : CLLocationManager = CLLocationManager()

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        locationM.delegate = self

        // 3.前台定位,后台定位(在info.plist文件中配置对应的key)

        // 4. 设置过滤距离
        // 如果当前位置, 距离上一次的位置之间的物理距离大于以下数值时, 就会通过代理, 将当前位置告诉外界
        locationM.distanceFilter = 100   // 每隔100 米定位一次

        // 5. 设置定位的精确度(定位精确度越高, 越耗电, 定位的速度越慢)
        locationM.desiredAccuracy = kCLLocationAccuracyBest

        return locationM
    }()

    // 点击屏幕,开始更新用户位置
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        locationM.startUpdatingLocation()
    }
}

// 类扩展(CLLocationManager的代理方法)
extension ViewController: CLLocationManagerDelegate {

    // 代理方法:当位置管理器,获取到位置后,就会调用此方法
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print("获取到位置")

        // 只想获取一次用户位置信息,那么在获取到位置信息之后,停止更新用户的位置信息
        // 应用场景: 获取用户所在城市
        manager.stopUpdatingLocation()
    }
}

和其余人一起在城池里衣冠楚楚地上下班的时候,灵魂早就不明了飘到哪儿去了,内心燃着雷同种欲望:Where 
is  my  next  race?  作者的下一场交锋在何地?

iOS 8.0+ 的定位

图片 1

代码3:

编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0

那里只贴首要代码,其他和代码2平等,详见文末 github 地址

info.plist 文件配置

03

【OC语言】
#pragma mark - 懒加载对象,并在懒加载方法中进行部分初始化操作
- (CLLocationManager *)locationM {
    if (!_locationM) {
        // 1. 创建位置管理者
        _locationM = [[CLLocationManager alloc] init];

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        _locationM.delegate = self;

        // 3.定位(在info.plist文件中配置对应的key)

        // 如果两个授权都请求,那么先执行前面那个请求弹框,后面那个请求授权 有可能 下次被调用时,才会起作用
        // 如果,先请求的是“前后台授权”,那“前台授权”即使被调用,也不会有反应(因为“前后台授权”权限大于“前台授权”)
        // 反之,如果先请求的是“前台授权”,而且用户选中的是“允许”,那下次被调用时“前后台授权”会做出请求,但只请求一次

        // 本质:1. 两个授权同时请求,先执行前面那个授权请求
        //      2. “前后台请求授权”方法,在(当前的授权状态 == 用户未选择状态 or 前台授权状态) 才会起作用
        //      3. “前台请求授权”方法,在(当前的授权状态 == 用户未选择状态) 才会起作用

        // 判断系统版本,做适配
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
            // 前台定位
            // 配合后台模式,屏幕上方会出现一个蓝色的横幅, 不断提醒用户, 当前APP 正在使用你的位置
            [_locationM requestWhenInUseAuthorization];

            // 前后台定位
            // 无论是否勾选后台模式, 都可以获取位置信息. 而且无论前后台, 都不会出现蓝条
            // [_locationM requestAlwaysAuthorization];
        }

        // 4. 设置定位的过滤距离(单位:米), 表示用户位置移动了x米时调用对应的代理方法
        _locationM.distanceFilter = 500; //在用户位置改变500米时调用一次代理方法

        // 5. 设置定位的精确度 (单位:米),(定位精确度越高, 越耗电, 定位的速度越慢)
        _locationM.desiredAccuracy = kCLLocationAccuracyBest;
    }
    return _locationM;
}

地理

【Swift语言】
    // 懒加载
    lazy var locationM : CLLocationManager = {

        // 1. 创建位置管理者
        let locationM : CLLocationManager = CLLocationManager()

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        locationM.delegate = self

        // 3.定位(在info.plist文件中配置对应的key)

        // 如果两个授权都请求,那么先执行前面那个请求弹框,后面那个请求授权 有可能 下次被调用时,才会起作用
        // 如果,先请求的是“前后台授权”,那“前台授权”即使被调用,也不会有反应(因为“前后台授权”权限大于“前台授权”)
        // 反之,如果先请求的是“前台授权”,而且用户选中的是“允许”,那下次被调用时“前后台授权”会做出请求,但只请求一次

        // 本质:1. 两个授权同时请求,先执行前面那个授权请求
        //      2. “前后台请求授权”方法,在(当前的授权状态 == 用户未选择状态 or 前台授权状态) 才会起作用
        //      3. “前台请求授权”方法,在(当前的授权状态 == 用户未选择状态) 才会起作用

        // 判断系统版本,做适配
        if (Float(UIDevice.current.systemVersion)! >= 8.0){
            // 前台定位
            // 配合后台模式,屏幕上方会出现一个蓝色的横幅, 不断提醒用户, 当前APP 正在使用你的位置
            locationM.requestWhenInUseAuthorization()

            // 前后台定位
            // 无论是否勾选后台模式, 都可以获取位置信息. 而且无论前后台, 都不会出现蓝条
            // locationM.requestAlwaysAuthorization()
        }

        // 4. 设置过滤距离
        // 如果当前位置, 距离上一次的位置之间的物理距离大于以下数值时, 就会通过代理, 将当前位置告诉外界
        locationM.distanceFilter = 100   // 每隔100 米定位一次

        // 5. 设置定位的精确度(定位精确度越高, 越耗电, 定位的速度越慢)
        locationM.desiredAccuracy = kCLLocationAccuracyBest

        return locationM
    }()

3遍次报名比赛,让整张世先生界地图在小编面前逐级清晰。你精晓天涯海角在什么地方么?你驾驭孔夫子的乡土在何地么?

iOS 9.0+ 的定位

马拉松变成了大家跟世界的接触点,并且在每1个接触点都足以无限展开,城市、历史、文化、美食……只要有丰盛的好奇心,每一场马拉松都能赢得比一块奖牌多得多的嘉奖。

代码4:

编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0

那里只贴主要代码,其他和代码2一律,详见文末 github 地址

info.plist 文件配置

04

【OC语言】
#pragma mark - 懒加载对象,并在懒加载方法中进行部分初始化操作
- (CLLocationManager *)locationM {
    if (!_locationM) {
        // 1. 创建位置管理者
        _locationM = [[CLLocationManager alloc] init];

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        _locationM.delegate = self;

        // 3.定位(在info.plist文件中配置对应的key)

        // 如果两个授权都请求,那么先执行前面那个请求弹框,后面那个请求授权 有可能 下次被调用时,才会起作用
        // 如果,先请求的是“前后台授权”,那“前台授权”即使被调用,也不会有反应(因为“前后台授权”权限大于“前台授权”)
        // 反之,如果先请求的是“前台授权”,而且用户选中的是“允许”,那下次被调用时“前后台授权”会做出请求,但只请求一次

        // 本质:1. 两个授权同时请求,先执行前面那个授权请求
        //      2. “前后台请求授权”方法,在(当前的授权状态 == 用户未选择状态 or 前台授权状态) 才会起作用
        //      3. “前台请求授权”方法,在(当前的授权状态 == 用户未选择状态) 才会起作用

        // 判断系统版本,做适配
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
            // 前台定位
            // 配合后台模式,屏幕上方会出现一个蓝色的横幅, 不断提醒用户, 当前APP 正在使用你的位置
            [_locationM requestWhenInUseAuthorization];

            // 前后台定位
            // 无论是否勾选后台模式, 都可以获取位置信息. 而且无论前后台, 都不会出现蓝条
            // [_locationM requestAlwaysAuthorization];

            // 如果是iOS9.0之后, 当前授权状态是前台定位授权状态, 也想在后台获取用户的位置信息,那么需要满足以下条件
            // 1. 勾选后台模式   2. 设置以下属性为YES(Swift, 里面是true)
            if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
                _locationM.allowsBackgroundLocationUpdates = YES;
            }
        }

        // 4. 设置定位的过滤距离(单位:米), 表示用户位置移动了x米时调用对应的代理方法
        _locationM.distanceFilter = 500; //在用户位置改变500米时调用一次代理方法

        // 5. 设置定位的精确度 (单位:米),(定位精确度越高, 越耗电, 定位的速度越慢)
        _locationM.desiredAccuracy = kCLLocationAccuracyBest;
    }
    return _locationM;
}

精确

【Swift语言】
    // 懒加载
    lazy var locationM : CLLocationManager = {

        // 1. 创建位置管理者
        let locationM : CLLocationManager = CLLocationManager()

        // 2. 设置代理, 接收位置数据(其他方式:block、通知)
        locationM.delegate = self

        // 3.定位(在info.plist文件中配置对应的key)

        // 如果两个授权都请求,那么先执行前面那个请求弹框,后面那个请求授权 有可能 下次被调用时,才会起作用
        // 如果,先请求的是“前后台授权”,那“前台授权”即使被调用,也不会有反应(因为“前后台授权”权限大于“前台授权”)
        // 反之,如果先请求的是“前台授权”,而且用户选中的是“允许”,那下次被调用时“前后台授权”会做出请求,但只请求一次

        // 本质:1. 两个授权同时请求,先执行前面那个授权请求
        //      2. “前后台请求授权”方法,在(当前的授权状态 == 用户未选择状态 or 前台授权状态) 才会起作用
        //      3. “前台请求授权”方法,在(当前的授权状态 == 用户未选择状态) 才会起作用

        // 判断系统版本,做适配
        if (Float(UIDevice.current.systemVersion)! >= 8.0){

            // 前台定位
            // 配合后台模式,屏幕上方会出现一个蓝色的横幅, 不断提醒用户, 当前APP 正在使用你的位置
            locationM.requestWhenInUseAuthorization()

            // 前后台定位
            // 无论是否勾选后台模式, 都可以获取位置信息. 而且无论前后台, 都不会出现蓝条
            // locationM.requestAlwaysAuthorization()

            // 如果是iOS9.0之后, 当前授权状态是前台定位授权状态, 也想在后台获取用户的位置信息,那么需要满足以下条件
            // 1. 勾选后台模式   2. 设置以下属性为true(OC, 里面是YES)
            if (Float(UIDevice.current.systemVersion)! >= 9.0){
                locationM.allowsBackgroundLocationUpdates = true
            }
        }

        // 4. 设置过滤距离
        // 如果当前位置, 距离上一次的位置之间的物理距离大于以下数值时, 就会通过代理, 将当前位置告诉外界
        locationM.distanceFilter = 100   // 每隔100 米定位一次

        // 5. 设置定位的精确度(定位精确度越高, 越耗电, 定位的速度越慢)
        locationM.desiredAccuracy = kCLLocationAccuracyBest

        return locationM
    }()

从今开端跑马拉松,我对时间、距离变得更灵敏了。在此之前自个儿不知道财大到光谷有多少路程,跑步后自身清楚了财大离光谷约6英里,跑过去大概要40秒钟,假如是走过去,大概3个钟头。

【不一样】前台定位 &前后台定位


正文源码 德姆o 详见 Github
https://github.com/shorfng/iOS\_7.0\_Device-Tools


作者:蓝田(Loto)

新兴,只要谈论去何地,作者先是反响就是,搜一下高德地图,看看距离多少路程。接着,看一下骑车要多久,再总计跑过去大致要稍微日子。

【文章揭穿平台】

简书
博客园

Gitbook(若是认为小说太长,请阅读此平台公布的篇章)

自从初始跑马拉松,对于时间和空中,作者有了新的度量衡,比起在此以前稀里糊涂没概念,笔者以为温馨活得更标准了些。

【代码托管平台】

Github

图片 2

【如有疑问,请通过以下办法交换】

评论区回复
发送邮件
shorfng@126.com

本文版权归笔者和本网站共有,欢迎转发,但未经作者同意必须保留此段评释,且在篇章页面明显地点给出原文连接,多谢合作。


05

设若觉得我的小说对你有用,请随意打赏。您的支撑将鼓励本身继续创作!
  • 付出宝扫一扫 向本人打赏
  • 您也可以微信 向本身打赏

社交

跑马前,遭受要跟素不相识人聊天的场所都很别扭。担心自个儿讲的话题别人会觉得无趣,而外人的话题小编也不清楚怎么接。

跑马后,借使遇上跑友,“天下跑友是一家”,大家当然可以从其余角度发轫无障碍互换;即便遇见不跑步的,只要告诉她本人跑过马拉松,也得以马上一边收受对方膜拜的眼神,一边安利对方初步跑步从而引向无穷话题。

自家伊始感受到互换的意趣,并早先大快朵颐每1回搭讪面生人的奇特历险,反正最多他以为自身是个跑马拉松跑坏脑子的精神病罢了。

06

自信

马拉松自身并不难,但身边跑过全马的人终究凤毛麟角。能挑战极限,给自个儿带来众多满怀信心,也开端相信“Nothing
is impossible”(一切皆有或然)

春招,自小编介绍时,都会提到马拉松。第③个offer,准确来讲,就是跑马拉松让自家赢得的。做完一份试卷之后,进入面试环节。面试官大概一向都在跟本身聊马拉松,最终面试通过,得到offer。后来抛弃了这家铺子,采取了荆楚潮,当然,这么些都今后话。

图片 3

说了如此多好处,目标唯有贰个,希望你们也可以将跑步作为一种生存情势。比起本人跑步,作者更期待可以作为跑步的传道者,让身边更四个人爱上跑步。跑向幸福,跑向健康。

自个儿期瞧着,和三伯姑姑一起来一场亲子跑,跑完三个个全程马拉松。小编梦想着,和家属们一同上阵,跑完全程。小编希看着,作者的“基友”们可以在自个儿的伴随和鼓励下完了人生第三个马拉松。我梦想着……

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图