描述:通过百度鹰眼服务获得车辆轨迹、历程
没有考虑并发问题,只是做简单的接口调试,如果有时间可以尝试自己封装一些实体,和工具类
用到的接口
public class URLConstant {
/**
*添加点坐标 POST请求
*/
public static final String BAIDUMAP_ADDPOINT = "http://yingyan.baidu.com/api/v3/track/addpoint";
/**
*查询里程GET请求
*/
public static final String BAIDUMAP_GETDISTANCE = "http://yingyan.baidu.com/api/v3/track/getdistance?ak={ak}&service_id={service_id}&entity_name={entity_name}&start_time={start_time}&end_time={end_time}";
/**
* 查询轨迹 GET请求
*/
public static final String BAIDUMAP_GETTRACK = "http://yingyan.baidu.com/api/v3/track/gettrack?ak={ak}&service_id={service_id}&entity_name={entity_name}&start_time={start_time}&end_time={end_time}";
}
get请求需要拼接路径,所以直接写死了!!!
spirng boot 中RestTemplate注入
@Configuration
public class RestTemplateConfig {
@Autowired
private RestTemplateBuilder builder;
@Bean
public RestTemplate restTemplate() {
return builder.build();
}
}
轨迹点封装
public class AddPointRequest implements java.io.Serializable{
/**
* 服务ak
*/
private String ak;
/**
* service的ID,service 的唯一标识
*/
private int service_id;
/**
* entity唯一标识
*/
private String entity_name;
/**
* 纬度
* double(-90.0 , +90.0)
*/
private double latitude;
/**
* 经度
* double(-90.0 , +90.0)
*/
private double longitude;
/**
* 定位时设备的时间
* Unix时间戳
*/
private long loc_time;
/**
* 坐标类型
*/
private String coord_type_input;
//get set
实现
@Component
public class mileage_baidu {
@Autowired
private RestTemplate restTemplate;
/**
* 添加坐标 参数列表
*/
public String addpoint(MultiValueMap<String, Object> map ) {
String body = restTemplate.postForObject(URLConstant.BAIDUMAP_ADDPOINT, map, String.class);
return body;
}
/**
* 里程查询
*/
public String getdistance(Map<String, Object> templateValues) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(URLConstant.BAIDUMAP_GETDISTANCE, String.class,templateValues);
return forEntity.getBody().toString();
}
/**
* 轨迹查询 参数列表
*/
public String gettrack(Map<String, Object> templateValues) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(URLConstant.BAIDUMAP_GETTRACK, String.class,templateValues);
return forEntity.getBody().toString();
}
}
addpoint()中map
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("ak", URLConstant.BAIDUMAP_AK);
map.add("service_id", 213605);
map.add("entity_name", "测试车");
map.add("latitude",40.089753 );
map.add("longitude", 116.420726);
map.add("loc_time", 1561008251);
map.add("coord_type_input", "bd09ll");
gettrack和getdistance中参数map相同
Map<String, Object> map = new HashMap<>();
map.put("ak", URLConstant.BAIDUMAP_AK);
map.put("service_id", 213605);
map.put("entity_name", "测试车");
map.put("start_time", "1559716508");
map.put("end_time", "1559720408");
注意:接口接受时间类型为uninx系统的时间戳,不能转换成yyyy等格式
末尾:百度的文档特别详细,基本上过几遍就可以调试成功。