From 90ab70ee2e1adc5f6f2cf3cac38df14b61568ba1 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 11 八月 2024 22:54:13 +0800
Subject: [PATCH] 8.9

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 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 9789aef..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
@@ -90,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 {
@@ -104,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);
+        }
+    }
+
+
     /**
      * 功能描述: 根据两个定位点的经纬度算出两点间的距离
      * 经纬度格式为: 经度,纬度

--
Gitblit v1.7.1