도로명 주소 (daum api) 사용

Back-End/Spring 2019. 7. 5. 17:19
728x90
반응형

 

 가. 도로명 주소 사이트


     - 행정 자치부 http://www.juso.go.kr


     - 개발자센터에서 API 신청 가능 (무료로)


     https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL



 나. 우편번호, 주소 서비스 방법


     1) 직접 구축

 

2018년 12월 기준 건물 DB 다운로드 141MB, 압축풀면 1.72GB

https://www.juso.go.kr/addrlink/addressBuildDevNew.do?menu=mainJusoDb


- 예를 들어 세종시 자료를 액셀에서 읽어들임 (구분자 : ㅣ)


- 텍스트 파일을 엑셀로 읽어서 (구분자 : ㅣ) csv로 변환한 후 필요한 컬럼만 선택한 후 저장


- 데이터를 import 할 테이블을 미리 생성한 후


- SQL Developer에서 import하여 테이블로 저장함.


2) API 사용


다음 API 사용


-http://postcode.map.daum.net/guide (키를 발급할 필요없이 바로 사용 가능 하다)





-직접 구축 사용법-


1. https://www.juso.go.kr/addrlink/addressBuildDevNew.do?menu=mainJusoDb에서 자료를 다운로드하고 압축




2. Excel을 열고, "열기" 버튼을 누르고 압축을 푼 파일을 열고, 다음 3단계를 진행









직접구축은 비용이 많이 들고 최신화할때마다 번거롭다.


그렇기 때문에 다음 API를 사용한다.




- 실습 예제 -


1. menu.jsp에 도로명 주소 하이퍼링크를 추가한다.

1
<a href="${path}/member/address.do">도로명주소</a> | 
cs


2.MemberController.java에 다음 메소드를 추가
1
2
3
4
5
@RequestMapping("address.do")
    public String address() {
        return "member/join";
    }
    
cs



3. join.jsp 페이지를 추가하고 다음 API를 사용해서 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@ include file="../include/header.jsp" %>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<script>
//daum객체는 위에서 설정한 라이브러리 안쪽에 들어있다.
function daumZipCode() {
 new daum.Postcode({
     oncomplete: function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 
//실행할 코드를 작성하는 부분.
 
         // 각 주소의 노출 규칙에 따라 주소를 조합한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 
//이를 참고하여 분기 한다.
         var fullAddr = ''// 최종 주소 변수
         var extraAddr = ''// 조합형 주소 변수
 
        // 사용자가 선택한 주소 타입에 따라 해당 주소 값을 
        // 가져온다.
        // 사용자가 도로명 주소를 선택했을 경우         
         if (data.userSelectedType === 'R') {  //R은 도로명 주소이다.
             fullAddr = data.roadAddress;
 
         } else { // 사용자가 지번 주소를 선택했을 경우(J)
             fullAddr = data.jibunAddress; //도로명 주소가 아니라면.. 지번주소.
         }
 
         // 사용자가 선택한 주소가 도로명 타입일때 조합한다.
         if(data.userSelectedType === 'R'){
             //법정동명이 있을 경우 추가한다.
             if(data.bname !== ''){
                 extraAddr += data.bname;
             } //도로명 주소일때는 법에 맞춰서 '동' 이름을 추가해야 한다.
             
             
             // 건물명이 있을 경우 추가한다.
             if(data.buildingName !== ''){
                 extraAddr += (extraAddr !== '' ? ', ' 
+ data.buildingName : data.buildingName);
             }
             
             // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
             fullAddr += (extraAddr !== '' ? 
                     ' ('+ extraAddr +')' : '');
         }
 
         // 우편번호와 주소 정보를 해당 필드에 넣는다.
         //5자리 새우편번호 사용
         document.getElementById('zipcode').value = data.zonecode; 
         document.getElementById('address1').value = fullAddr; //address1에 확정된 주소값의 풀네임이 들어간다.
 
         // 커서를 상세주소 필드로 이동한다. 
         // 커서를 이동시켜서 깜빡이게끔 한다.
         document.getElementById('address2').focus();
     }
 }).open();
}
</script>
</head>
<body>
<%@ include file="../include/menu.jsp" %>
<form name="form1" method="post">
<!-- 쓰기는 안되고 읽기만 되도록함-->
    우편번호 : <input name="zipcode" id="zipcode" readonly 
                            size="10">
                            <!-- daumZipCode()는 다음 사이트에서 가져온 API -->
    <input type="button" onclick="daumZipCode()" 
        value="우편번호 찾기"><br>
    주소 : <input name="address1" id="address1" size="60"><br>
    상세주소 : <input name="address2" id="address2">
</form>
</body>
</html>
cs


728x90
반응형
: