由于百度鹰眼oc的demo还没有给,自己最近写了一个分享一下
百度鹰眼查询历史轨迹只能查寻24小时之内的,当然如果要查询好多天的可以24小时24小时的差
[[BTRACEAction shared]getTrackHistory:self serviceId:serviceID entityName:_nameStr startTime:bxStartTime endTime:bxEndTime simpleReturn:1 isProcessed:isProcessed processOption:processOption supplementMode:_param.supplementMode sortType:0 pageSize:5000 pageIndex:1];
serviceId 鹰眼轨迹管理台创建鹰眼服务时分配的service_id
entityName 要查询的实体对象的名称
startTime 起始时间(UNIX时间戳)
endTime 结束时间(UNIX时间戳)
simpleReturn 是否返回精简结果 0代表返回原始结果,1代表返回精简结果,2代表只返回本段轨迹的里程。
isProcesed 是否返回纠偏后轨迹 0为返回原始轨迹,1为返回纠偏后的轨迹。
processOption 轨迹纠偏选项。
supplementMode 里程补偿方式。 //去燥 抽稀 绑路 交通方式 里程补偿方式
sortType 结果排序方式。0代表返回的轨迹点按loc_time从大到小排序,1代表从小到大排序。
pageSize 返回结果中每页有几条数据。0代表不指定,最大值为5000,默认返回100条。
pageIndex 返回结果的第几页。0代表不指定,默认返回第1页。
HistoryParam.h
/// 交通方式,纠偏选项中的transport_mode选项的枚举
///
/// - driving: 驾车
/// - riding: 骑行
/// - walking: 步行
enum TransportMode: NSInteger {
driving = 1,
riding = 2,
walking = 3,
};
/// 里程补偿方式,纠偏选项中的supplement_mode选项的枚举
///
/// - no_supplement: 不补充
/// - straight: 直线距离补充
/// - driving: 最短驾车路线距离补充
/// - riding: 最短骑行路线距离补充
/// - walking: 最短不行路线距离补充
//enum SupplementMode: NSString {
//case no_supplement,
//case straight,
//case driving,
//case riding,
//case walking,
//};
// 历史轨迹查询页面所设置的参数
@interface HistoryParam : NSObject
@property (nonatomic, assign) int64_t startTime;
@property (nonatomic, assign) int64_t endTime;
@property (nonatomic, assign) BOOL needDenoise; // 去燥
@property (nonatomic, assign) BOOL needVacuate; // 抽稀
@property (nonatomic, assign) BOOL needMapMatch;// 绑路
@property (nonatomic, assign) enum TransportMode transportMode; // 交通方式
@property (nonatomic, copy) NSString *supplementMode; // 里程补偿方式
@end
-------
点用设置看你想达到什么效果
_param = [[HistoryParam alloc]init];
// 默认的数据加工选项是去燥、抽吸、绑路
_param.needDenoise = YES;
_param.needVacuate = YES;
_param.needMapMatch = YES;
// 默认的交通方式选择设置为驾车
_param.transportMode = driving;
// 默认的里程补充方式设置为不补充
_param.supplementMode = @"no_supplement";
// 设置开始时间、结束时间
_param.startTime = self.startTime;
_param.endTime = self.endTime;
代用鹰眼方法
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
long long bxStartTime = transitionStartTime;
long long bxEndTime = transitionStartTime + [PPXdata oneDayTimeStamp];
[[BTRACEAction shared]getTrackHistory:self serviceId:serviceID entityName:_nameStr startTime:bxStartTime endTime:bxEndTime simpleReturn:1 isProcessed:isProcessed processOption:processOption supplementMode:_param.supplementMode sortType:0 pageSize:5000 pageIndex:1];
// [[BTRACEAction shared] getTrackHistory:self serviceId:serviceID entityName:_nameStr startTime:_startTime endTime:_endTime simpleReturn:1 isProcessed:0 pageSize:5000 pageIndex:1];
day = day - 1;
transitionStartTime = bxEndTime;
});
返回结果
/**
* 历史轨迹查询回调方法
* @param data JSON格式的返回内容
*/
- (void)onGetHistoryTrack:(NSData * _Nonnull)data{
//写法一
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",json);
int status = [json[@"status"] intValue];
if (status != 0) {
NSLog(@"查询历史轨迹数据失败");
return;
}
NSArray *points = [json[@"points"] copy];
if (points.count == 0) {
NSLog(@"points没数据");
return;
}
//设置起点终点
// for (int i = 0; i < points.count; i ++) {
// NSArray * point = points[i];
// NSNumber * longitude = point[0];
// NSNumber * latitude = point[1];
// CLLocationCoordinate2D clLocationCoordinate2D;
// clLocationCoordinate2D.latitude = [latitude doubleValue];
// clLocationCoordinate2D.longitude = [longitude doubleValue];
// if(i==0)
// {
// self.startPoint = [self creatPointWithLocaiton:&clLocationCoordinate2D title:@"起点"];
// }
// else if (i==points.count-1)
// {
// self.endPoint = [self creatPointWithLocaiton:&clLocationCoordinate2D title:@"终点"];
// }
//
// }
for (NSArray *arr in points) {
float latitude = [arr[1] floatValue];
float longitude = [arr[0] floatValue];
int loctime = [arr[2]intValue];
if (fabs(latitude - 0) <= PPX_EPSILON && fabs(longitude - 0) <= PPX_EPSILON) {
continue;
}
HistoryPoint *historyPoint = [[HistoryPoint alloc]init];
historyPoint.latitude = latitude;
historyPoint.longitude = longitude;
historyPoint.loctime = loctime;
[_historyPoints addObject:historyPoint];
}
//所有历史点
NSLog(@"%lu",(unsigned long)_historyPoints.count);
之后你可以划线或者别的之类的
}