From ecca9ab70a9a87bcb60977c92fbf81053b8fc1bb Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 04 九月 2024 09:17:55 +0800 Subject: [PATCH] 新增优化 --- ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java | 78 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 73 insertions(+), 5 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 149b7d6..cdbff3c 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 @@ -6,10 +6,7 @@ import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.enums.GaoDeEnum; import com.ruoyi.common.core.exception.GlobalException; -import com.ruoyi.common.core.vo.GaoDeMap; -import com.ruoyi.common.core.vo.Path; -import com.ruoyi.common.core.vo.PolylineData; -import com.ruoyi.common.core.vo.Steps; +import com.ruoyi.common.core.vo.*; import java.io.BufferedReader; import java.io.IOException; @@ -93,6 +90,10 @@ if (reGeoCode.size() > 0) { // 在regeocode中拿到 formatted_address 具体位置 String formatted = reGeoCode.get("formatted_address").toString(); + JSONObject addressComponent = reGeoCode.getJSONObject("addressComponent"); + String adcode = addressComponent.getString("adcode"); + String s = convertToCityCode(adcode); + System.err.println("====s"); return Result.succeed(formatted, "地址获取成功!"); } else { @@ -106,6 +107,54 @@ return Result.failed("系统未知异常,请稍后再试"); } } + + + public static Result<String> getCityCode(String longitude, String latitude) { + String url; + try { + url = "http://restapi.amap.com/v3/geocode/regeo?output=JSON&location=" + longitude + "," + latitude + + "&key=" + GAO_DE_KEY + "&radius=0&extensions=base"; + // 高德接口返回的是JSON格式的字符串 + String queryResult = getResponse(url); + if (ObjectUtils.isNull(queryResult)) { + return Result.failed("查询结果为空"); + } + // 将获取结果转为json 数据 + JSONObject obj = JSONObject.parseObject(queryResult); + if (obj.get(GaoDeEnum.STATUS.getCode()).toString().equals(GaoDeEnum.INT_ONE.getCode())) { + // 如果没有返回-1 + JSONObject reGeoCode = obj.getJSONObject(GaoDeEnum.RE_GEO_CODE.getCode()); + if (reGeoCode.size() > 0) { + // 在regeocode中拿到 formatted_address 具体位置 + String formatted = reGeoCode.get("formatted_address").toString(); + JSONObject addressComponent = reGeoCode.getJSONObject("addressComponent"); + String adcode = addressComponent.getString("adcode"); + String s = convertToCityCode(adcode); + System.err.println("====s"); + return Result.succeed(s, "地址获取成功!"); + + } else { + return Result.failed("未找到相匹配的地址!"); + } + } else { + return Result.failed("请求错误!"); + } + } catch (Exception e) { + e.printStackTrace(); + return Result.failed("系统未知异常,请稍后再试"); + } + } + + public static String convertToCityCode(String districtCode) { + // 确保输入的字符串长度至少为6位 + if (districtCode.length() >= 6) { + // 截取前6位中的前4位作为城市代码 + return districtCode.substring(0, 4) + "00"; + } else { + throw new IllegalArgumentException("Invalid district code length: " + districtCode); + } + } + /** * 功能描述: 根据两个定位点的经纬度算出两点间的距离 @@ -127,6 +176,25 @@ JSONObject jobO = JSONObject.parseObject(ja.getString(0)); long result = Long.parseLong(jobO.get("distance").toString()); return Result.succeed(result, "距离计算成功!"); + } + + /** + * 功能描述: 根据地址获取城市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), "距离计算成功!"); } /** @@ -160,7 +228,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); -- Gitblit v1.7.1