轨迹查询

简介

查询设定时间段内的历史轨迹(开始结束时间不超过24小时),分页返回。返回数据为:轨迹点串(坐标、速度、方向、高度、track自定义属性信息)和里程。

坐标系的说明

输出参数坐标系均为百度经纬度坐标系(bd09ll)

查询一天内的轨迹

例如,查询entity_name=car1在2016/8/16当天的轨迹。

// 轨迹服务ID
long serviceId = 10000;
// entity标识
String entityName = "car1";
// 是否返回精简结果
int simpleReturn = 0;
// 是否纠偏
int isProcessed = 0;
// 纠偏选项
String processOption = null;
 // 开始时间
int startTime = 1471276800;
// 结束时间
int endTime = 1471363199;
// 分页大小
int pageSize = 5000;
// 分页索引
int pageIndex = 1;
 
//调用queryHistoryTrack()查询历史轨迹
private void queryHistoryTrack(int pageIndex) {
  client.queryHistoryTrack(serviceId , entityName, simpleReturn, isProcessed,   
  processOption, startTime, endTime, pageSize, pageIndex, trackListener);
    }
 
//在OnTrackListener的onQueryHistoryTrackCallback()回调接口中,判断是否已查询完毕。
OnTrackListener trackListener = new OnTrackListener() {
        public void onQueryHistoryTrackCallback(String message) {
               JSONObject dataJson = new JSONObject(message);
               int  total = dataJson.getInt("total");
               if (total > (pageSize * pageIndex)) {
               queryHistoryTrack(++pageIndex);
               }
             // 解析并保存轨迹信息
         }
}

动态实时更新轨迹

若app需要实时显示轨迹,可以采用间隔一个打包周期的频率,查询历史轨迹,也可以根据实际业务对实时性的要求,调整查询频率,但需注意流量及电量的消耗,以30s一个打包周期为例:

  // 轨迹服务ID
  long serviceId = 10000;
  // entity标识
  String entityName = "car1";
  // 是否返回精简结果
  int simpleReturn = 0;
  // 是否纠偏
   int isProcessed = 0;
  // 纠偏选项
  String processOption = null;
  // 开始时间
  int startTime = (int)(System.currentTimeMillis()/1000);
  // 分页大小
  int pageSize = 5000;
  // 分页索引
  int pageIndex = 1;
 
  // 间隔打包周期,轮询调用queryHistoryTrack()
private void queryHistoryTrack() {
  // 结束时间
  int endTime = (int)(System.currentTimeMillis()/1000);
 // 查询新增的轨迹
  client.queryHistoryTrack(serviceId , entityName, simpleReturn, isProcessed,   
  processOption, startTime, endTime, pageSize, pageIndex, trackListener);
}
 
   OnTrackListener trackListener = new OnTrackListener() {
public void onQueryHistoryTrackCallback(String message) {
        JSONObject data = new JSONObject(message);
        JSONObject endPoint = data. getJSONObject ("end_point");
 
       //更新startTime,在当前查询的最后一个点的时间戳上加1,作为下一次查询的开始时间
        startTime = endPoint.getInt("loc_time") + 1;
 
        // 解析并保存轨迹信息
}
}

轨迹展示

查询获得历史轨迹后,可结合百度地图Android SDK绘制并展示轨迹。

轨迹平滑绘制demo下载链接:http://wiki.lbsyun.baidu.com/cms/baidutrace/MainActivity.java.zip

%E8%BD%A8%E8%BF%B9%E6%98%BE%E7%A4%BA.jpeg