【九月打卡】第3天 多端全栈项目实战
课程名称:多端全栈项目实战:商业级代驾全流程落地
课程章节: 华夏代驾全栈小程序实战
课程讲师: 神思者
课程内容:
开通腾讯云地图
课程收获:
首先 进入网页开通 或者 注册
创建我的应用 之后点击编辑 需要勾选 webServiceAPI 勾选白名单 以及填入自己的 appid
在这个项目中 需要通过ajax 获取地理位置信息 后端通过 这些信息 进行计算路程 所以后端java项目也必须调用java版本的腾讯位置api 计算路程
common子系统的application-common.yml
接下来就开始代码部分
我们需要封装 预估里程和时间
乘客下单时 ,java项目需要预估里程和时间
https://lbs.qq.com/service/webService/webServiceGuide/webServiceMatrix
这是腾讯位置的api
首先我们要编写 service
需要传书得值 分边是 起点的经纬度, 终点的经纬度 以及 出行方式
mode
计算方式,取值:
driving:驾车
walking:步行
bicycling:自行车
不同的交通工具计算的时间也不同
from= 纬度 , 经度
在service 里用hashMap存这五个需要的数据
public interface MapService { public HashMap estimateOrderMileageAndMinute(String mode, String startPlaceLatitude, String startPlaceLongitude, String endPlaceLatitude, String endPlaceLongitude); }
编写impl
预估里程的api 以及 需要的key
//预估里程的API地址 private String distanceUrl = "https://apis.map.qq.com/ws/distance/v1/matrix/"; @Value("${tencent.map.key}") private String key;
使用 httpRequest 发送http请求 首先需要封装一下要传的值
HttpRequest req = new HttpRequest(distanceUrl); req.form("mode", mode); req.form("from", startPlaceLatitude + "," + startPlaceLongitude); req.form("to", endPlaceLatitude + "," + endPlaceLongitude); req.form("key", key);
发送请求后 需要将 返回的数据 转换成json
HttpResponse resp = req.execute(); JSONObject json = JSONUtil.parseObj(resp.body()); int status = json.getInt("status"); String message = json.getStr("message");
判断异常
如果有异常 则需要抛出
没有异常得话
接下来需要将 获得的数据进行处理 比如 返回的距离是以米为单位 我们要转换成 公里
时间是秒 我们也需要进行处理
JSONArray rows = json.getJSONObject("result").getJSONArray("rows"); JSONObject element = rows.get(0, JSONObject.class).getJSONArray("elements").get(0, JSONObject.class); int distance = element.getInt("distance"); String mileage = new BigDecimal(distance).divide(new BigDecimal(1000)).toString(); int duration = element.getInt("duration"); String temp = new BigDecimal(duration).divide(new BigDecimal(60), 0, RoundingMode.CEILING).toString(); int minute = Integer.parseInt(temp); HashMap map = new HashMap() {{ put("mileage", mileage); put("minute", minute); }};
共同学习,写下你的评论
评论加载中...
作者其他优质文章