新普金娱乐网址


HTML5 & CSS3的初交互特性地理

Android开放百度地图集成

旷日持久带来了呀?

  • 十二月 16, 2018
  • 地理
  • 没有评论

2016.01.02,跑了人生第一场旷日持久——安卡拉马拉松。我领悟了,从此世界上但来半点种人:跑了久的,没有走了久的。

本文并非最后版,假若想只要关爱更新或又凑巧的内容要关注文集,联系格局详见文末,如发生不经意和落,欢迎指正。

有人说:“没有啊是一样集旷日持久解决不了的,假使起,就再也走同场”。也有人说:“不管走多少个长时间,也救不了两难的而”。还有人口说:“跑马拉松的仍然生故事的人数”。


要当跑马拉松可以给人口脱胎换骨,成为人生狂胜,这不苟去烧香拜佛。跑步带为大家的曾足足多矣,它不是巫术,不可能实现大家具备的意。假使当长时间毫无意义,浪费时间浪费钱,这这样多走者满世界去跑马拉松,是脑力有毛病么?

本文系目录:
================== 所属文集:【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 地图框架Map基特功效2:路线规划(导航)
7.4 定位服务->3.3 地图框架Map基特(Kit)效率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

众人口说:我只想跑了一蹩脚马拉松,然后就是未飞了。很多口且食言了。多少人口说:我生一致不成重复报全马我尽管是傻逼。几个人口最终甘愿做傻逼。

【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
    }()

五次次报名比赛,让整张世界地图在本人眼先天益清晰。你知天涯海角在乌也?你领悟孔丘的本土在什么地方呢?

iOS 9.0+ 的定位

悠久变成了我们和世界之接触点,并且以各级一个沾点还是可以够尽展开,城市、历史、文化、美食……只要有足的好奇心,每一样集旷日持久还是可以够得到相比较同块奖牌多得多的赏。

代码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分钟,假假若移动过去,大约1只钟头。

【区别】前台定位 &前后台定位


本文源码 Demo 详见 Github
https://github.com/shorfng/iOS\_7.0\_Device-Tools


作者:蓝田(Loto)

后来,只要谈论去何方,我首先反馈就是,搜一下高德地图,看看距离多少距离。接着,看一下骑车要多长期,再计跑过去大概要小时间。

【小说宣布平台】

简书
博客园

Gitbook(假如以为随笔最充足,请阅读者平台宣布之稿子)

起开头跑马拉松,对于日和空中,我发矣初的渡过量衡,比由往日稀里糊涂没概念,我觉着温馨在得再准了几。

【代码托管平台】

Github

图片 2

【如暴发问号,请通过以下办法交换】

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

正文版权归作者和本网站共有,欢迎转载,但未经作者同意要保留这么些段子声明,且以著作页面显明地方为有原文连接,谢谢合作。


05

如果认为自家之章针对性而发出由此,请随意打赏。您的支撑用鼓励我连续写!
  • 开发宝扫一扫 向我打赏
  • 君为堪微信 向自家打赏

社交

跑马前,境遇要同陌生人聊天的场子都深别扭。担心自己说的话题别人会见以为无趣,而旁人的话题我呢非掌握怎么连。

跑马后,假如遇上跑友,“天下跑友是平等下”,我们本来好于此外角度开端任障碍交换;虽然撞不跑的,只要报他本身飞了长期,也足以立时一边收受对方膜拜的视力,一边安利对方开跑从而引向无穷话题。

我起感受及沟通之意趣,并开头享用每一样赖搭讪陌生人的怪历险,反正最多外道自家是独跑马拉松跑好脑子的精神病罢了。

06

自信

马拉松本身并无碍事,但身边跑过全马的总人口总凤毛麟角。能挑战极限,给自己带多自信,也起相信“Nothing
is impossible”(一切皆有或)

春招,自我介绍时,都会合波及马拉松。第一个offer,准确来讲,就是跑马拉松让自己得到的。做扫尾一客试卷后,进入面试环节。面试官几乎一直还当与自身聊马拉松,最终面试通过,得到offer。后来舍了这家店,采取了荆楚潮,当然,这几个如故后话。

图片 3

说了这么多好处,目标只有来一个,希望你们为会用跑步作为一如既往栽在模式。比起自己跑,我再度盼可以作为跑的传道者,让身边还三个人好上跑步。跑往幸福,跑为健康。

本身欲着,和公公三姨一起来同样场亲子跑,跑了一个个全程马拉松。我想着,和妻儿们共上阵,跑了全程。我盼望着,我之“基友”们会在自身的伴和鼓励下完了人生第一只长时间。我梦想在……

相关文章

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