RestTemplate请求百度鹰眼服务接口

5 篇文章 0 订阅
2 篇文章 0 订阅

描述:通过百度鹰眼服务获得车辆轨迹、历程

没有考虑并发问题,只是做简单的接口调试,如果有时间可以尝试自己封装一些实体,和工具类
用到的接口

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等格式
末尾:百度的文档特别详细,基本上过几遍就可以调试成功。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我作为AI语言模型,无法提供完整的Java代码实现,但我可以为您提供一些思路和参考代码。 百度鹰眼轨迹上传功能的实现主要涉及到以下几个步骤: 1. 创建轨迹上传请求对象 通过调用百度鹰眼API提供的轨迹上传接口,创建一个轨迹上传请求对象,包括轨迹点数据、设备标识、数据采集时间等信息。 例如: ```java TraceUploadRequest request = new TraceUploadRequest(); request.setEntityName("device001"); request.setStartTime(System.currentTimeMillis() / 1000); request.setEndTime(System.currentTimeMillis() / 1000 + 60); List<Point> points = new ArrayList<Point>(); points.add(new Point(116.404, 39.915, System.currentTimeMillis() / 1000)); points.add(new Point(116.405, 39.916, System.currentTimeMillis() / 1000 + 10)); request.setPoints(points); ``` 2. 创建鉴权对象 为了保证数据上传的安全性,需要创建一个鉴权对象,包括AK、SK和SN等信息。 例如: ```java TraceUploadService service = new TraceUploadService(); service.setAk("your_ak"); service.setSk("your_sk"); service.setTraceUploadRequest(request); service.createSn(); ``` 3. 请求并处理响应 最后,将轨迹上传请求对象送到百度鹰眼API服务器,并处理响应结果。 例如: ```java TraceUploadResponse response = service.doUpload(); if (response.getStatus() == 0) { System.out.println("上传成功!"); } else { System.out.println("上传失败:" + response.getMessage()); } ``` 以上是一个简单的Java代码实现百度鹰眼轨迹上传功能的示例,具体实现还需根据具体业务需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值