为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第3天 多端全栈项目实战

标签:
SpringBoot

课程名称:多端全栈项目实战:商业级代驾全流程落地

课程章节:  华夏代驾全栈小程序实战

课程讲师: 神思者



课程内容:

    开通腾讯云地图


课程收获:


    https://lbs.qq.com/

    首先 进入网页开通 或者 注册

    

    创建我的应用 之后点击编辑  需要勾选 webServiceAPI 勾选白名单  以及填入自己的 appid


    https://img2.sycdn.imooc.com/631885030001eea007980649.jpg

    

    在这个项目中 需要通过ajax 获取地理位置信息 后端通过 这些信息 进行计算路程 所以后端java项目也必须调用java版本的腾讯位置api 计算路程

    common子系统的application-common.yml

        https://img1.sycdn.imooc.com/631885b100010d2a08550181.jpg

    


接下来就开始代码部分  

    我们需要封装 预估里程和时间


    https://img2.sycdn.imooc.com/631885e40001162109140302.jpg


    乘客下单时 ,java项目需要预估里程和时间 

    https://lbs.qq.com/service/webService/webServiceGuide/webServiceMatrix


    这是腾讯位置的api

        

    首先我们要编写 service

        需要传书得值 分边是 起点的经纬度, 终点的经纬度  以及 出行方式 

    mode 

    计算方式,取值:
        driving:驾车
        walking:步行
        bicycling:自行车

    不同的交通工具计算的时间也不同

    https://img4.sycdn.imooc.com/6318870f0001331005180215.jpg

        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);
}};




https://img1.sycdn.imooc.com/631884a50001600111670663.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
27
获赞与收藏
19

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消