里程计算

简介

鹰眼Android SDK提供了queryDistance()方法,用于计算指定时间段内的轨迹里程,支持:

1. 计算纠偏后的里程

2. 支持用路线规划补偿中断轨迹的里程

坐标系说明

目前中国主要有以下三种坐标系:


WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。


GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。


BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标


非中国地区地图,统一使用WGS84坐标


鹰眼 Web服务API v3.0的默认输入输出坐标为百度经纬度坐标系(bd09ll),同时可通过"coordType" ,"coordTypeInput","coordTypeOutput"(以各方法参数介绍为准)控制输入输出的坐标类型,鹰眼将自动完成转换。

使用方法

与查询轨迹一样,里程计算也支持设置 isProcessed和processOption纠偏选项,纠正里程计算。详见轨迹纠偏的说明


除此之外,里程计算还提供里程补充功能,当轨迹中断5分钟以上,会被认为是一段中断轨迹,通过supplementMode参数可设置中断区间里程的计算方式,选项有:

① no_supplement:不补充,中断两点间距离不记入里程。


② straight:使用直线距离补充


③ driving:使用最短驾车路线距离补充


④ riding:使用最短骑行路线距离补充


⑤ walking:使用最短步行路线距离补充


开发者可以根据具体的业务场景选择合适的补充方式。

示例代码

请求12小时内的轨迹里程,并进行轨迹纠偏和驾车里程补偿。

// 请求标识
int tag = 2;
// 轨迹服务ID
long serviceId = 0;
// 设备标识
String entityName = "myTrace";
// 创建里程查询请求实例
DistanceRequest distanceRequest = new DistanceRequest(tag, serviceId, entityName);
 
// 开始时间(单位:秒)
long startTime = System.currentTimeMillis() / 1000 - 12 * 60 * 60;
// 结束时间(单位:秒)
long endTime = System.currentTimeMillis() / 1000;
// 设置开始时间
distanceRequest.setStartTime(startTime);
// 设置结束时间
distanceRequest.setEndTime(endTime);
 
 
// 设置需要纠偏
distanceRequest.setProcessed(true);
 
 
// 创建纠偏选项实例
ProcessOption processOption = new ProcessOption();
// 设置需要去噪
processOption.setNeedDenoise(true);
// 设置需要绑路
processOption.setNeedMapMatch(true);
// 设置交通方式为驾车
processOption.setTransportMode(TransportMode.driving);
// 设置纠偏选项
distanceRequest.setProcessOption(processOption);
 
 
// 设置里程填充方式为驾车
distanceRequest.setSupplementMode(SupplementMode.driving);
 
 
// 初始化轨迹监听器
OnTrackListener mTrackListener = new OnTrackListener() {
    // 里程回调
    @Override
    public void onDistanceCallback(DistanceResponse response) {}
};
 
 
 
// 查询里程
mTraceClient.queryDistance(distanceRequest, mTrackListener);