全部服务产品
开发者频道
定价
登录
缓存轨迹处理
下载开发文档
简介

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

查询缓存信息

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

清空缓存

通过 BTKTrackAction 类中的 -(void)clearTrackCacheWith:(BTKClearTrackCacheRequest *)request delegate:(id<BTKTrackDelegate>)delegate; 方法,清空满足指定条件的轨迹缓存数据。

查询缓存信息

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

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

// 构造请求对象
BTKQueryTrackCacheInfoRequest *request = [[BTKQueryTrackCacheInfoRequest alloc] initWithEntityNames:nil serviceID:100000 tag: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:100000 tag:333];
request.needDistance = YES;
request.distanceFilter = 10;
// 发起请求
[[BTKTrackAction sharedInstance] queryTrackCacheInfoWith:request delegate:self];
清空缓存信息

通过 -(void)clearTrackCacheWith:(BTKClearTrackCacheRequest *)request delegate:(id<BTKTrackDelegate>)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:100000 tag:33];
// 发起请求
[[BTKTrackAction sharedInstance] clearTrackCacheWith:request delegate:self];

上一篇

轨迹追踪

下一篇

空间搜索

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