鹰眼ios sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
缓存轨迹处理
下载开发文档
简介

鹰眼ios sdk在网络不畅时,将采集到的轨迹持久化在客户端本地,称为轨迹缓存。鹰眼 ios sdk v3.0以上版本提供了查询和清除本地缓存轨迹信息的方法:

查询缓存信息

通过 btktrackaction 类中的 -(void)querytrackcacheinfowith:(btkquerytrackcacheinforequest *)request delegate:(id)delegate; 方法,查询客户端缓存的轨迹数据所属的终端实体名称、时间段、轨迹点数量、轨迹里程等信息。

清空缓存

通过 btktrackaction 类中的 -(void)cleartrackcachewith:(btkcleartrackcacherequest *)request delegate:(id)delegate; 方法,清空满足指定条件的轨迹缓存数据。

查询缓存信息

通过 -(void)querytrackcacheinfowith:(btkquerytrackcacheinforequest *)request delegate:(id)delegate; 方法,查询客户端缓存轨迹数据所属的终端实体名称、时间段、数量等信息;

以下代码片段表示,查询缓存在本机上的所有entity的时间段和轨迹点数量信息。

// 构造请求对象
btkquerytrackcacheinforequest*request =[[btkquerytrackcacheinforequest alloc] initwithentitynames:nil serviceid:100000tag:333];
// 发起请求
[[btktrackaction sharedinstance] querytrackcacheinfowith:request delegate:self];
查询缓存轨迹里程

自iosv3.0.7版本起,支持缓存轨迹的里程查询。此功能主要是通过btkquerytrackcacheinforequest类的needdistance属性(bool类型)以及distancefilter属性(double类型)来使用的:

needdistance属性(bool类型)

指定是否需要返回所查询的缓存的里程信息,默认为false,当指定此属性为true时,查询到的缓存信息结构不变,只不过在每个entity对应的缓存信息字典中,新增了一个distance字段,表示该entity符合条件的里程数(单位:米)。

distancefilter属性(double类型)

由于缓存里程在sdk端离线计算,无法享受到鹰眼服务端强大的轨迹纠偏功能。不过开发者可以通过设置distancefilter属性(double类型),在计算里程时将不符合预期定位精度的轨迹点排除掉。例如设置distancefilter=60的话,则定位精度超过60米的轨迹点都不会参与该entity的离线里程计算。而如果开发者不设置此字段,或将此字段的值设置为0,则所有缓存的轨迹点都参与计算。

以下代码片段表示,查询缓存在本机上的属于 "robota" 这个entity的缓存轨迹点数量及里程,定位精度超过10米的轨迹点都不参与里程计算:

// 构造请求对象
btkquerytrackcacheinforequest*request =[[btkquerytrackcacheinforequest alloc] initwithentitynames:@"robota"serviceid:100000tag:333];
request.needdistance=yes;
request.distancefilter=10;
// 发起请求
[[btktrackaction sharedinstance] querytrackcacheinfowith:request delegate:self];
清空缓存信息

通过 -(void)cleartrackcachewith:(btkcleartrackcacherequest *)request delegate:(id)delegate; 方法,清空客户端缓存的轨迹信息。

以下代码片段表示,清空缓存在本机上,属于 “entitya” 的前天的轨迹,以及属于 “entityb” 的昨天的轨迹。

nsuinteger now =[[nsdate date] timeintervalsince1970];
// 设置entitya名下,要清空的轨迹缓存的起止时间
btkcleartrackcacheoption*op1 =[[btkcleartrackcacheoption alloc] initwithentityname:@"entitya"starttime:(now -84400*3) endtime:(now -84400*2)];
// 设置entitya名下,要清空的轨迹缓存的起止时间
btkcleartrackcacheoption*op2 =[[btkcleartrackcacheoption alloc] initwithentityname:@"entityb"starttime:(now -84400*2) endtime:(now -84400)];
// 设置清空的条件
nsmutablearray*options =[nsmutablearray arraywithcapacity:2];
[options addobject:op1];
[options addobject:op2];
// 构造请求对象
btkcleartrackcacherequest*request =[[btkcleartrackcacherequest alloc] initwithoptions:options serviceid:100000tag:33];
// 发起请求
[[btktrackaction sharedinstance] cleartrackcachewith:request delegate:self];

上一篇

轨迹追踪

下一篇

空间搜索

本篇文章对您是否有帮助?

网站地图