package com.ruoyi.shop.util.map;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.shop.util.map.vo.TencentDistanceMatrix;
|
import com.ruoyi.shop.util.map.vo.TencentDistanceMatrixElements;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 地图工具
|
* @author zhibing.pu
|
* @Date 2023/10/30 9:44
|
*/
|
public class MapUtil {
|
|
private static final String tencentKey = "FATBZ-V3AWH-7IJDS-WC7NC-QXY3Q-TQFDJ";
|
|
|
/**
|
* 距离矩阵计算-腾讯
|
* @param form 起点经纬度-lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]|lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]…
|
* @param to 终点经纬度-lat,lng;lat,lng…
|
* @param mode 计算方式,取值:driving:驾车 walking:步行 bicycling:自行车
|
* @return
|
*/
|
public static R<List<TencentDistanceMatrix>> tencentDistanceMatrix(String form, String to, String mode){
|
String url = "https://apis.map.qq.com/ws/distance/v1/matrix";
|
HttpRequest get = HttpUtil.createGet(url)
|
.form("key", tencentKey)
|
.form("from", form)
|
.form("to", to)
|
.form("mode", mode);
|
HttpResponse execute = get.execute();
|
JSONObject jsonObject = JSON.parseObject(execute.body());
|
Integer status = jsonObject.getInteger("status");
|
String message = jsonObject.getString("message");
|
if(0 == status){
|
JSONObject result = jsonObject.getJSONObject("result");
|
JSONArray rows = result.getJSONArray("rows");
|
List<TencentDistanceMatrix> list = new ArrayList<>();
|
for (int i = 0; i < rows.size(); i++) {
|
TencentDistanceMatrix tencentDistanceMatrix = new TencentDistanceMatrix();
|
|
JSONObject jsonObject1 = rows.getJSONObject(i);
|
JSONArray elements = jsonObject1.getJSONArray("elements");
|
List<TencentDistanceMatrixElements> elementsList = new ArrayList<>();
|
for (int j = 0; j < elements.size(); j++) {
|
JSONObject jsonObject2 = elements.getJSONObject(j);
|
TencentDistanceMatrixElements elements1 = new TencentDistanceMatrixElements();
|
elements1.setDistance(jsonObject2.getInteger("distance"));
|
elements1.setDuration(jsonObject2.getInteger("duration"));
|
elementsList.add(elements1);
|
}
|
tencentDistanceMatrix.setElements(elementsList);
|
list.add(tencentDistanceMatrix);
|
}
|
return R.ok(list);
|
}
|
return R.fail(message);
|
}
|
|
|
}
|