package com.stylefeng.guns.modular.system.util; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class GaoDeMapUtil { public static void main(String[] args) { // 地址名称 String address = "深圳市"; // 调用自己写好的封装方法 JSONObject positionObj = getLngAndLat(address); String longitude = positionObj.getString("longitude"); String latitude = positionObj.getString("latitude"); System.out.println("经度:" + longitude); System.out.println("纬度:" + latitude); } /** * 根据地址查询经纬度 * * @param address * @return */ public static JSONObject getLngAndLat(String address) { JSONObject positionObj = new JSONObject(); try { // 拼接请求高德的url String url = "http://restapi.amap.com/v3/geocode/geo?address=" + address + "&output=JSON&key=" + "9de4f857805bc84051aa13adeb2c44c8"; // 请求高德接口4bdddca5a75e9fcf95fc8404082d3330 String result = sendHttpGet(url); JSONObject resultJOSN = JSONObject.parseObject(result); System.out.println("高德接口返回原始数据:"); System.out.println(resultJOSN); JSONArray geocodesArray = resultJOSN.getJSONArray("geocodes"); if (geocodesArray.size() > 0) { String position = geocodesArray.getJSONObject(0).getString("location"); String[] lngAndLat = position.split(","); String longitude = lngAndLat[0]; String latitude = lngAndLat[1]; positionObj.put("longitude", longitude); positionObj.put("latitude", latitude); } geocodesArray.getJSONObject(0).getString("location"); } catch (Exception e) { e.printStackTrace(); } return positionObj; } /** * 发送Get请求 * * @param url * @return */ public static String sendHttpGet(String url) { HttpGet httpGet = new HttpGet(url); RequestConfig defaultRequestConfig = RequestConfig.custom() .setConnectTimeout(3000) .setSocketTimeout(10000) .build(); CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build(); String result = ""; try { CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpGet); HttpEntity entity = closeableHttpResponse.getEntity(); result = EntityUtils.toString(entity, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } return result; } }