1: 申请高德服务key
/**
* @param addressName
* @param cityName
* @Description 根据高德地图, 通过地址获取经纬度坐标
* @Throws
* @Return java.lang.String
* @Date 2023-04-13 10:50:22
* @Author WangKun
*/
public static Map<String, BigDecimal> getLatAndLngOrGDMap(String addressName, String cityName) {
try {
Map<String, BigDecimal> map = new HashMap<>();
String address = URLEncoder.encode(addressName, "UTF-8");
String city = URLEncoder.encode(cityName, "UTF-8");
String mapUrl = "http://restapi.amap.com/v3/geocode/geo?key=高德key&address=" + address + "&city=" + city;
URL url = new URL(mapUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
connection.disconnect();
JSONObject a = JSON.parseObject(sb.toString());
JSONObject c = JSON.parseObject(JSON.parseArray(a.get("geocodes").toString()).get(0).toString());
String location = c.get("location").toString();
List<String> result = Arrays.asList(location.split(","));
map.put("lng", new BigDecimal(result.get(0)));
map.put("lat", new BigDecimal(result.get(1)));
return map;
} catch (IndexOutOfBoundsException index) {
throw new IndexOutOfBoundsException();
} catch (Exception e) {
e.printStackTrace();
System.out.println("失败!");
}
return null;
}
调用:
System.out.println(getLatAndLngOrGDMap("详细地址", "***市"));