亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消