Browse Source

途宝报单新需求 09点09分

wangzhuo 1 year ago
parent
commit
09eb55adf3
1 changed files with 65 additions and 0 deletions
  1. 65 0
      ruoyi-common/src/main/java/com/ruoyi/common/MapUtils.java

+ 65 - 0
ruoyi-common/src/main/java/com/ruoyi/common/MapUtils.java

@@ -0,0 +1,65 @@
+package com.ruoyi.common;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.monitoringAlarms.utils.HttpUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Objects;
+
+@Configuration
+public class MapUtils {
+
+    @Value("${spring.gaode.key}")
+    private String key;
+
+    /**
+     * 坐标转地址
+     * @param points 坐标
+     * @return 地址
+     * @throws Exception
+     */
+    public String pointsToLocationsAll(String points) throws Exception {
+
+        //将GPS坐标转化为高德地图坐标的URL后再去请求位置信息
+        try {
+            points = URLEncoder.encode(points, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+        String convertUrl = "https://restapi.amap.com/v3/assistant/coordinate/convert?locations=" + points + "&coordsys=gps&key=" + key;
+        //GPS坐标转为高德地图坐标
+        String s = HttpUtil.get(convertUrl);
+        JSONObject jsonObject = JSON.parseObject(s);
+        String status = (String) jsonObject.get("status");
+        if (Objects.equals(status, "0")) {
+            throw new RuntimeException("远程调用经纬度转化出错");
+        }
+        String locations = (String) jsonObject.get("locations");
+        String formattedAmapPoints = null;
+        try {
+            formattedAmapPoints = URLEncoder.encode(locations.replaceAll(";", "|"), "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+        String locationUrl = "https://restapi.amap.com/v3/geocode/regeo?output=json&location=" + formattedAmapPoints + "&key=" + key + "&radius=1000&batch=true";
+        String s1 = HttpUtil.get(locationUrl);
+        //获取转地址后的结果
+        JSONObject parseObject = JSON.parseObject(s1);
+        String status1 = (String) parseObject.get("status");
+        if (Objects.equals(status1, "0")) {
+            throw new RuntimeException("根据经纬度获取具体地址出错");
+        }
+        JSONArray regeocodes = parseObject.getJSONArray("regeocodes");
+        String formattedAddress = "";
+        for (Object regeocode : regeocodes) {
+            JSONObject object = (JSONObject) regeocode;
+            formattedAddress = (String) object.get("formatted_address");
+        }
+        return formattedAddress;
+    }
+}