11月16日分享

1.如何精确获取地理位置并获取较为准确的地标

CLLocationManager类可以实时的获得我们位置的经纬度,并且可以通过经纬度在MapView上定位:

CLLocationManager可以根据自身情况来设置desiredAccuracy来改变精度。设置了CLLocationManager代理后如果获取到了WIFI,基站或者GPS的经纬度会回调下面方法:

我们对获取到的locations这个数组取了一个CLLocation出来。location.horizontalAccuracy,CLLocation这个类里面包含了horizontalAccuracy,verticalAccuracy,speed等等。我们现在需要的是对horizontalAccuracy进行限定,因为horizontalAccuracy越大返回的数据精度却是越不精确。location.horizontalAccuracy一般的精度在65,精确的有在20,遇到过不精确的有达到2000,会受一些物理环境的影响。我们获取到了horizontalAccuracy值较小的CLLocation后就去高德api地址查询接口:

self.radius是高德所需的一个范围查询,越小返回的地标越准确。

2.利用地图进行距离计算和平滑轨迹上传


有了1提到的精确坐标我们就开始计算里程。一段长距离的里程我们可以分割成N段直接距离,所以我们要确定好一个合理的时间去计算每小段的距离。我们记录了两段时间currentTime,oldTime,根据这两段时间我们就能获取到这段路程花费的时间,根据高德给出的直线距离计算 distance = (self.userCLLocation?.distance(from: self.oldCLLocation!))! / 1000我们能获取到里程,然后依次了累加。

但是还是会有突发情况发生,比如:APP奔溃,或者进入到隧道,经纬度获取条件差的地带,那我们怎么解决呢?想一段一段计算里程那是不可能的,因为我们获取不到经纬度,考虑到高德地图有给出路线规划的一个api,那我们只好用路线规划的距离去弥补最小的损失。

在特殊情况我们只需要保存startPoint,和获取到最新的endPoint。然后看高德驾车路线规划的回调


处理结果

driveManager.naviRoute?.routeLength就是上述两个点的距离。

下面我们来说下绘制平滑驾车轨迹点的办法:lbs.amap.com/api/ios-sdk/guide/draw-on-map/trace

3.使用地图优化电量

先看下一个链接stackoverflow.com/questions/9746675/cllocationmanager-responsiveness

if(([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) || ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateFull)) {

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

} else {

locationManager.desiredAccuracy = kCLLocationAccuracyBest;

}

这是人家给出的电量优化小技巧,但是效果不大,如下:


我们来理解下这句话:首先有两件事可以改善,第一呢就是使用kCLLocationAccuracyBestForNavigation这个参数。没有真正的电池使用的差异和kcllocationaccuracybest一样,他们都以最快的速度使用GPS。这里提到了最主要的区别就是苹果的post-processing处理机制。  第二,不需要为速度等于0做过滤,苹果已经进行了过滤:如果GPS的速度低于某一阈值(大约4km/h),操作系统假设您静止不动,它将为所有后续值提供相同位置值作为替换,知道监测到你动了为止。我认为他们这样做,以避免“抖动”的地图时,你仍站着。事实上,速度已经下降到0的最后一个实际值的序列“静止”值,所以如果你过滤速度= 0比你错过了一个真正的GPS样本。不幸的是,他们无法避免过滤和获得真正的GPS样本。我和苹果公司谈过此事,他们的反应是他们不会改变这种行为。kcllocationaccuracybestfornavigation和kcllocationaccuracybest过滤比,所以最好使用。第三,你可能已经在这样做了,但要确保你所说的“你的观点正确setNeedsDisplay”从“didupdatefromlocation:“,以确保地图实际上是重绘。如果你这样做,你应该有大约1秒的滞后。如果你想提高1秒,你可以试着使用预测技术。从最后两个位置和给定的速度,您可以计算下一个位置可能是什么位置,并且已经显示了该位置。我的结果好坏参半。它能很好地工作,不会像驾驶汽车那样突然改变速度。它对诸如步行或骑自行车这样的慢动作效果较差。

4.Relam 数据库的介绍

www.cocoachina.com/ios/20150505/11756.htm

特别注意的是:当更改表的字段后需要对数据库进行迁移升级操作,操作代码如下

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容