From 2ba520852073e172ab1524bcebed510b4277ff3f Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 03 六月 2025 14:37:05 +0800
Subject: [PATCH] 订单列表上一页下一页修改
---
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java | 84 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 79 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 4fcbc50..65d978f 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;
@@ -30,7 +27,7 @@
/**
* 功能描述: 高德地图Key
*/
- private static final String GAO_DE_KEY = "37331f325a4f4ea25bc0d4e1900a1730";
+ private static final String GAO_DE_KEY = "2f22a10b75e0c24a074de515f3cdcaea";
/**
* 功能描述: 根据地址名称得到两个地址间的距离
@@ -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 {
@@ -107,6 +108,54 @@
}
}
+
+ 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);
+ }
+ }
+
+
/**
* 功能描述: 根据两个定位点的经纬度算出两点间的距离
* 经纬度格式为: 经度,纬度
@@ -116,12 +165,14 @@
* @return 两个定位点之间的距离
*/
public static Result<Long> getDistance(String startLonLat, String endLonLat) {
+ System.err.println("======"+startLonLat+"===="+endLonLat);
// 返回起始地startAddr与目的地endAddr之间的距离,单位:米
String queryUrl =
"http://restapi.amap.com/v3/distance?key=" + GAO_DE_KEY + "&origins=" + startLonLat
+ "&destination="
+ endLonLat;
String queryResult = getResponse(queryUrl);
+ System.err.println("======"+queryResult);
JSONObject job = JSONObject.parseObject(queryResult);
JSONArray ja = job.getJSONArray("results");
JSONObject jobO = JSONObject.parseObject(ja.getString(0));
@@ -130,6 +181,29 @@
}
/**
+ * 功能描述: 根据地址获取城市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
+ + "&output=json&key=" + GAO_DE_KEY;
+ String queryResult = getResponse(queryUrl);
+ GaoDeAddressInfoVO data = JSONObject.parseObject(queryResult, GaoDeAddressInfoVO.class);
+ List<Geocodes> geocodes = data.getGeocodes();
+ if (geocodes==null||geocodes.isEmpty())
+ return Result.failed(null, "计算失败");
+ Geocodes info = geocodes.get(0);
+ String adcode = info.getAdcode();
+ String city = info.getCity();
+ String location = info.getLocation();
+ String[] split = location.split(",");
+ return Result.succeed(new CityInfoVO(city, adcode,Double.valueOf(split[0]),Double.valueOf(split[1])), "距离计算成功!");
+ }
+
+ /**
* 功能描述: 发送请求
*
* @param serverUrl 请求地址
--
Gitblit v1.7.1