Programing/API
Java 자바 다음지도 좌표>주소 변환 API 활용방법
리커니
2018. 9. 26. 17:56
반응형
Java 자바 다음지도 좌표>주소 변환 API 활용방법
WGS84 좌표 값을 주소로 변환하기 위해서는
KakaoDevelopers 에서 해당 api에 대한 키를 발급받으셔야 합니다.
발급받은 REST API 키를 활용하여 좌표를 주소로 변환하는 방법을 알아보도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
public static String coordToAddr(double x, double y){
String url = "https://dapi.kakao.com/v2/local/geo/coord2address.json?x="+x+"&y="+y+"&input_coord=WGS84";
String addr = "";
try{
addr = getRegionAddress(getJSONData(url));
logger.info(addr);
}catch(Exception e){
logger.error("주소 api 요청 에러", e);
e.printStackTrace();
}
return addr;
} |
cs |
변환을 위한 API url은 위와 같습니다.
getJSONData 메소드는 해당 url로 요청을 후 리턴해 오는 json 데이터를 String으로 받아 리턴하는 함수 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
private static String getJSONData(String apiUrl) throws Exception {
String jsonString = new String();
String buf;
URL url = new URL(apiUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
String auth = "KakaoAK "+apikey;
conn.setRequestMethod("GET");
conn.setRequestProperty("X-Requested-With", "curl");
conn.setRequestProperty("Authorization", auth);
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "UTF-8"));
while ((buf = br.readLine()) != null) {
jsonString += buf;
}
return jsonString;
} |
cs |
여기서 주의하셔야 될 부분은 apikey를 httpConnection에 Autorization 으로 set 해주셔야 한다는 것입니다.
api url에 추가 하는 것이 아닙니다.
그럼 리턴받은 jsonString 데이터를 파싱하는 getRegionAddress 메소드를 보도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
private static String getRegionAddress(String jsonString) {
String value = "";
JSONObject jObj = (JSONObject) JSONValue.parse(jsonString);
JSONObject meta = (JSONObject) jObj.get("meta");
long size = (long) meta.get("total_count");
if(size>0){
JSONArray jArray = (JSONArray) jObj.get("documents");
JSONObject subJobj = (JSONObject) jArray.get(0);
JSONObject roadAddress = (JSONObject) subJobj.get("road_address");
if(roadAddress == null){
JSONObject subsubJobj = (JSONObject) subJobj.get("address");
value = (String) subsubJobj.get("address_name");
}else{
value = (String) roadAddress.get("address_name");
}
if(value.equals("") || value==null){
subJobj = (JSONObject) jArray.get(1);
subJobj = (JSONObject) subJobj.get("address");
value =(String) subJobj.get("address_name");
}
}
return value;
} |
cs |
json 데이터의 구조는 sysout 하시면 확인 하실 수 있습니다.
저의 경우 도로명 주소를 우선으로 리턴하고, 도로명 주소가 없을 경우 지번으로 데이터를 받아오도록
구현하였습니다.
기타 좌표 관련 API는 아래의 Link를 참고하세요.
반응형