도로명 주소 (daum api) 사용
Back-End/Spring 2019. 7. 5. 17:19
가. 도로명 주소 사이트 - 행정 자치부 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 |
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 |
'Back-End > Spring' 카테고리의 다른 글
Spring boot 프로젝트 (생성, 실행) (0) | 2019.07.06 |
---|---|
Spring boot와 Spring legacy의 차이점 (0) | 2019.07.05 |
게시판 만들기 (게시물 수정, 파일 첨부, 첨부파일 삭제, 게시물 삭제) (0) | 2019.07.04 |
AJAX 방식 (0) | 2019.07.04 |
게시판 만들기 (댓글 쓰기 / 댓글 목록/ 댓글 갯수) (2) | 2019.07.04 |