美文网首页
11月16日分享

11月16日分享

作者: 我才是烈酒斗士 | 来源:发表于2017-11-21 14:52 被阅读0次

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

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

相关文章

  • 分享分享分享分享

    分享分享分享分享

  • 分享分享分享

    我向来都觉得,一个人不考虑家人的感受,置家人的期待和理想于不顾,而不是去沟通和体恤家人的话,不会是一个优秀和成熟的...

  • 分享分享分享

    阅读:富裕属于口袋里装满快乐的人 通往富裕以及抵达富裕后的路线图的第二步: ✅ 处于富裕的状态,是指内在状态,与外...

  • 分享

    分享分享分享分享分享分享分享分享分享分享分享分享分享

  • 【十】分享分享

    漫长等待牵挂的容颜, 在你回眸间重叠, 我丢失了语言, 再也无法说分别. 不想错过你所有时间, 却总有遗憾沉淀, ...

  • 分享的分享

    分享一位朋友的个人案例和交流收获,仅供参考: 这位男性朋友曾是深圳某500强公司的中高层干部,常年高负荷工作让他错...

  • 分享时刻<分享>

    分享一下很有意义的一段话如下 这段话不错,值得分享! 一群人能走到一起不容易,有的强势,有的随和,有的厉害,有的温...

  • 『分享』 今日分享

    1. 当你老了,回顾一生,就会发觉:什么时候出国读书,什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚...

  • 没写,分享分享

    电话打了几次才打通。 “每次你们的快递都是最快的,为什么这次这么慢?”女孩问道,“说好的空运当日就能收件,可这都过...

  • 分享分享吧

    1.通感 它虽然是比喻,要靠的是天马行空的想象力。比如《荷塘月色》里“微风过处,送来缕缕清香,仿佛远处高楼上渺茫的...

网友评论

      本文标题:11月16日分享

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