JAVA使用高德地图API获取地理位置名称/二点之间距离

  • 登陆高德开放平台,注册账号
  • 创建应用并获取key

  • 创建内部链接方法
 /**
     * 向指定URL发送GET方法的请求
     *
     * @param url 发送请求的URL
     * @return URL 所代表远程资源的响应结果
     */
    public static String sendGet(String url) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            return null;
        } finally { // 使用finally块来关闭输入流
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }
  • 根据经纬度获取地理位置名称
    /**
         * 逆地理编码url
         *
         * @param location 经纬度坐标,经度在前,纬度在后,经纬度间以“,”分割
         * @return
         */
        public static String getRegeoUrl(String location) {
            return "http://restapi.amap.com/v3/geocode/regeo?location=" + location + "&key=" + key;
        }

     

    /**
         * 获取地理位置名称
         *
         * @param location 经纬度坐标,经度在前,纬度在后,经纬度间以“,”分割
         * @return
         */
        public static String getAddressNameByGeocoder(String location) {
            String jsonString = sendGet(getRegeoUrl(location));
            JSONObject jsonObject = JSONObject.parseObject(jsonString);
            String addressName = jsonObject.getJSONObject("regeocode").getString("formatted_address");
            return addressName;
        }
  • 获取二个位置之间的直线距离
    /**
         * 距离测量API服务地址
         *
         * @param origins     出发点
         * @param destination 目的地
         * @return
         */
        public static String getDistanceUrl(String origins, String destination) {
            String urlString = "http://restapi.amap.com/v3/distance?type=0&origins=" + origins + "&destination=" + destination + "&key=" + key;
            return urlString;
        }
    /**
         * 获取二个地点之间的直线距离
         * @param origins 出发地
         * @param destination 目的地
         * @return
         */
        public static String getDistance(String origins, String destination) {
            String jsonString = sendGet(getDistanceUrl(origins,destination));
            JSONObject jsonObject = JSONObject.parseObject(jsonString);
            String distance = jsonObject.getJSONArray("results").getJSONObject(0).getString("distance");
            return distance;
        }

    更多内容请参照官方API

http://lbs.amap.com/api/webservice/summary/

posted @ 2018-04-10 16:07  黑点灬  阅读(5697)  评论(0编辑  收藏  举报