美文网首页
高德地图通过地址获取经纬度

高德地图通过地址获取经纬度

作者: LegendaryTao | 来源:发表于2019-08-08 10:34 被阅读0次
import net.sf.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 高德地图工具类
 */
public class GouldMapUtil {

    public static class GouldMap{
        private Double latitude;//纬度
        private Double longitude;//经度

        public Double getLatitude() {
            return latitude;
        }

        public void setLatitude(Double latitude) {
            this.latitude = latitude;
        }

        public Double getLongitude() {
            return longitude;
        }

        public void setLongitude(Double longitude) {
            this.longitude = longitude;
        }
    }

    /**
     * 通过地址、城市获取经纬度
     * @param address
     * @param city
     * @param poId
     * @return
     */
    public static GouldMap getMap(String address, String city, String poId) {
        //AddressMapKey  请自行去高德申请
        String key ="29087623465hjkljjklhg95386a1";
        String url = "https://restapi.amap.com/v3/geocode/geo?parameters";
        Map<String, Object> requestMap = new HashMap<>();//todo 参数按照字母顺序排列
        address = address.replace(" ", "").replace("(","(").replace(")",")").replace("\t","");
        requestMap.put("address", address);
        requestMap.put("city", city.replace(" ", ""));

        String parms = HttpSender.getInstance().formatGet("", requestMap);
        String sign = MD5Util.sign(parms);
        requestMap.put("key", key);
        requestMap.put("sig", sign);
        String parameter = HttpSender.getInstance().formatGetParameter("", requestMap);

        String responseJson = null;
        String getUrl = url + parameter;
        try {
            responseJson = HttpSender.getInstance().get(getUrl);
        } catch (Exception e) {
            System.out.println("地址解析异常:" + poId);
        }
        if (StringUtil.isEmpty(responseJson)) {
            return null;
        }

        return getMapByResult(responseJson);
    }

    public static GouldMap getMapByResult(String responseJson){
        GouldMap tencentMap = new GouldMap();
        Map<String, Object> stringObjectMap = JsonUtilGjson.parseJSON2Map(responseJson);
        if (stringObjectMap.get("info").equals("OK")) {
            List result = (List) stringObjectMap.get("geocodes");
            if(result.size()==0){
                return null;
            }
            Map map = (Map) result.get(0);
            String locationMap = map.get("location").toString();
            String[] split = locationMap.split(",");
            Double lng = Double.valueOf(split[0]);
            Double lat = Double.valueOf(split[1]);
            if (lng == 0 || lat == 0) {
                return null;
            }
            tencentMap.setLongitude(lng);
            tencentMap.setLatitude(lat);
            return tencentMap;
        }
        return null;
    }
}

相关文章

网友评论

      本文标题:高德地图通过地址获取经纬度

      本文链接:https://www.haomeiwen.com/subject/udmtjctx.html