实时轨迹 编辑文档

1. 轨迹记录

- startRecordingPathForKey方法用于记录指定 Key 的轨迹,并实时上传至云端,默认为 5 秒 上传一次。

[locationService startRecordingPathForKey:@"key"];

- startRecordingPathForKey:withCompletionBlock:方法可以在上传开始后执行一次回调。

[locationService startRecordingPathForKey:@"key" withCompletionBlock:^(NSError * _Nullable error) {
NSLog(@"Recording started!");
}];

设置上传频率

和位置同步一样,你可以根据时间或距离设置上传频率,这种方式需要传入一个WDGAmapLocationProvider实例:

  • 根据时间间隔上传,最小间隔 1秒, 最大间隔 300 秒。

例如,每 2 秒 记录一个轨迹点:

WDGAMapLocationProvider *locationProvider = [[WDGAMapLocationProvider alloc] initWithTimeInterval:2.0];
[locationService startRecordingPathForKey:@"key" withLocationProvider:locationProvider];
  • 根据距离间隔上传,最小间隔 0 米 (1 秒判断一次),最大间隔 100 米。

例如,每移动 10 米记录一个轨迹点:

WDGAMapLocationProvider *locationProvider = [[WDGAMapLocationProvider alloc] initWithDistance:10.0];
[locationService startRecordingPathForKey:@"key" withLocationProvider:locationProvider];

- startTracingPositionForKey:withLocationProvider:withCompletionBlock:方法可以在上传开始后执行一次回调。

[locationService startRecordingPathForKey:@"key" withLocationProvider:locationProvider withCompletionBlock:^(NSError * _Nullable error) {
NSLog(@"Recording started!");
}];

停止记录轨迹

- stopRecordingPathForKey:用于停止记录指定 Key 的轨迹。

[locationService stopRecordingPathForKey:@"key"];

- stopRecordingPathForKey:withCompletionBlock:方法可以在上传开始后执行一次回调。

[locationService stopRecordingPathForKey:@"key" withCompletionBlock:^(NSError * _Nullable error) {
NSLog(@"Recording stopped!");
}];

2. 轨迹查询

创建轨迹查询

- pathQueryForKey:startTime:endTime: 用于查询实时轨迹,轨迹一旦发生变化,将会实时更新。

NSDate *start = [NSDate dateWithTimeIntervalSince1970:1497863758];
NSDate *end = [NSDate date];
WDGPathQuery *pathQuery = [locationService pathQueryForKey:@"key" startTime:start endTime:end];

注意:


如果 endTime 传入了 nil 或者是未来的事件,查询将会一直返回最新的轨迹记录,直到到达设置时间或监听被取消为止。

WilddogLocation SDK 还提供了不同参数版本的轨迹查询创建方法:

  • pathQueryForKey:为全量查询,默认查询全部的记录。
  • pathQueryForKey:startTime:只设置查询开始时间,一直查询最新的记录。
  • pathQueryForKey:endTime:只设置查询结束时间,从最早的记录开始。

实时轨迹监听

- observeSingleEventWithBlock: 用于持续监听指定时间范围内的轨迹记录,直到设定结束时间到达为止。

WilddogHandle handle = [pathQuery observeWithBlock:^(WDGPathSnapshot * _Nonnull snapshot) {
NSLog(@"Path: %@", snapshot.points);
}];

实时轨迹监听结束后也需要移除监听:

// 使用handle移除单个监听
[pathQuery removeObserverWithHandle:handle];
// 移除所有监听
[pathQuery removeAllObservers];

如果你想绘制一条实时的轨迹,可以利用 latestPoint 实时绘制新的轨迹点。

WilddogHandle handle = [pathQuery observeWithBlock:^(WDGPathSnapshot * _Nonnull snapshot) {
NSLog(@"Latest Point: %@", snapshot.latestPoint);
}];

单次轨迹查询

- observeSingleEventWithBlock: 用于查询指定时间范围内的轨迹记录。

[pathQuery observeSingleEventWithBlock:^(WDGPathSnapshot * _Nonnull snapshot) {
NSLog(@"Path: %@", snapshot.points);
}];

轨迹长度

WDGPathSnapshot 的属性 length 用于记录轨迹的长度,单位为米。

WilddogHandle handle = [pathQuery observeWithBlock:^(WDGPathSnapshot * _Nonnull snapshot) {
NSLog(@"Path length: %d", snapshot.length);
}];

3. 移除轨迹

- removePathForKey: 用于删除服务器存储的指定 key 的轨迹记录。

[locationService removePathForKey:@"key"];

- removePathForKey:withCompletionBlock: 可以在删除操作完成后执行一次回调。

[locationService removePathForKey:@"key" withCompletionBlock:^(NSError * _Nullable error) {
NSLog(@"Path deleted!");
}];
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题