|  | @@ -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;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |