From dc9239d73b15b9a51c46a9e8d25c0d4400e613ce Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期一, 29 七月 2024 09:17:54 +0800 Subject: [PATCH] 7.29 --- ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 46 insertions(+), 8 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java index 1235a71..9789aef 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java @@ -5,7 +5,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.enums.GaoDeEnum; -import com.ruoyi.common.core.vo.GaoDeMap; +import com.ruoyi.common.core.exception.GlobalException; +import com.ruoyi.common.core.vo.*; import java.io.BufferedReader; import java.io.IOException; @@ -13,6 +14,10 @@ import java.net.URL; import java.net.URLConnection; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * @author HJL @@ -22,9 +27,7 @@ /** * 功能描述: 高德地图Key */ - private static final String GAO_DE_KEY = "3f00f94b6e9f470a5c6f510c3df814ea"; - - //申请的账户Key + private static final String GAO_DE_KEY = "37331f325a4f4ea25bc0d4e1900a1730"; /** * 功能描述: 根据地址名称得到两个地址间的距离 @@ -32,7 +35,6 @@ * @param start 起始位置 * @param end 结束位置 * @return long 两个地址间的距离 - * @author isymikasan */ public static Long getDistanceByAddress(String start, String end) { String startLonLat = getLonLat(start).getDatas(); @@ -125,6 +127,25 @@ } /** + * 功能描述: 根据地址获取城市code + * + * @param address d地址 + * @return 两个定位点之间的距离 + */ + public static Result<CityInfoVO> getAddressInfo(String address) { + // 返回起始地startAddr与目的地endAddr之间的距离,单位:米 + String queryUrl = "https://restapi.amap.com/v3/geocode/geo?address=" + address + + "&key=" + GAO_DE_KEY; + String queryResult = getResponse(queryUrl); + GaoDeAddressInfoVO data = JSONObject.parseObject(queryResult, GaoDeAddressInfoVO.class); + List<Geocodes> geocodes = data.getGeocodes(); + Geocodes info = geocodes.get(0); + String adcode = info.getAdcode(); + String city = info.getCity(); + return Result.succeed(new CityInfoVO(city, adcode), "距离计算成功!"); + } + + /** * 功能描述: 发送请求 * * @param serverUrl 请求地址 @@ -155,7 +176,7 @@ * @param destination 目的地经纬度 * @return 路线规划信息 */ - public static Object routing(String origin, String destination) { + public static Path routing(String origin, String destination) { String baseUrl = "https://restapi.amap.com/v3/direction/driving?origin=%s&destination=%s" + "&extensions=all&output=json&key=%s"; String requestUrl = String.format(baseUrl, origin, destination, GAO_DE_KEY); @@ -170,11 +191,28 @@ json.append(inputLine); } in.close(); - } catch (IOException ignored) { + } catch (IOException e) { + throw new GlobalException("获取路线规划失败!"); } String data = json.toString(); GaoDeMap gaoDeMap = JSONObject.parseObject(data, GaoDeMap.class); - return gaoDeMap.getRoute().getPaths().get(0); + Path path = gaoDeMap.getRoute().getPaths().get(0); + List<Steps> steps = path.getSteps(); + for (Steps step : steps) { + // 经纬度地址指向 + List<PolylineData> polylineDataList = new ArrayList<>(); + String polyline = step.getPolyline(); + List<String> list = Arrays.stream(polyline.split(";")).collect(Collectors.toList()); + for (String s : list) { + String[] split = s.split(","); + // 经纬度 + String longitude = split[0]; + String latitude = split[1]; + polylineDataList.add(new PolylineData(longitude, latitude)); + } + step.setPolylineList(polylineDataList); + } + return path; } } \ No newline at end of file -- Gitblit v1.7.1