다음 우편번호 주소검색 API 활용법 > 그누보드5 팁자료실

그누보드5 팁자료실

다음 우편번호 주소검색 API 활용법 정보

다음 우편번호 주소검색 API 활용법

본문

이 API 은 완전히 공개되어 있습니다.

https://postcode.map.daum.net/guide

 

고맙게도 제이쿼리가 아니라 순자(순수 자바스크립트)로 오픈되어 있는지라 순자만 사용하는 저로서는 천만다행으로 독해하기가 별로 어렵지 않았습니다.

링크페이지에서 제가 생각하는 일종의 "엑기스"만 한번 소개해 볼게요.

먼저 아래코드를 한번 실행해 보세요.

이 코드는 제가 제 방식대로 가장 명료하게 추린 코드입니다. 각 색깔의 아이디는 본인이 다른 이름으로 줘도 됩니다.

상세주소 부분은 주소검색이 끝난 후 자동으로 포커스가 이동되며 "유일"하게 본인이 직접 입력하는 항목입니다.

 

<style>
input { display:block; width:300px; }
</style>
<button type="button" onclick="daumAddress()">주소검색</button>
<input id="post_code" placeholder="우편번호">
<input id="road_address" placeholder="도로명주소">
<input id="jibun_address" placeholder="지번주소">
<input id="detail_address" placeholder="상세주소">
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
function daumAddress() {
    new daum.Postcode({
        oncomplete: function(data) {
            document.querySelector("#post_code").value = data.zonecode; // 우편번호
            document.querySelector("#road_address").value = data.roadAddress; // 도로명주소
            document.querySelector("#jibun_address").value = data.jibunAddress; // 지번주소
        }
    }).open();
    document.querySelector("#detail_address").focus();
}
</script>

 

----------

 

이걸 게시판의 여분필드로 적용하는 방법입니다. 지번주소도 필요없을 것 같아서 제외하였습니다.

아래 코드를 write.skin.php 의 적당부분에 넣어보세요.

빨간색이 추가된 소스입니다. 여분필드 1,2,3 을 사용했습니다.

 

<style>
input { display:block; width:300px; }
</style>
<button type="button" onclick="daumAddress()">주소검색</button>
<input id="post_code" placeholder="우편번호" name="wr_1" value="<?php echo $write['wr_1']; ?>">
<input id="road_address" placeholder="기본주소" name="wr_2" value="<?php echo $write['wr_2']; ?>">
<input id="detail_address" placeholder="상세주소" name="wr_3" value="<?php echo $write['wr_3']; ?>">
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
function daumAddress() {
    new daum.Postcode({
        oncomplete: function(data) {
            document.querySelector("#post_code").value = data.zonecode; // 우편번호
            document.querySelector("#road_address").value = data.roadAddress; // 기본주소
        }
    }).open();
    document.querySelector("#detail_address").focus();
}
</script>

 

뷰페이지에서는 아래처럼 표현해 주면 되겠죠.

 

<?php echo $view['wr_1']." ".$view['wr_2']." ".$view['wr_3']; ?>

또는 변수를 하나 만들어서 아래처럼요. 리스트페이지도 동일패턴으로 적용합니다.

<?php
$view_address = $view['wr_1']." ".$view['wr_2']." ".$view['wr_3'];
echo $view_address;
?>

 

저는 3개의 여분필드를 사용하는 것이 낭비라는 생각이 들어 약간의 용을 써서 하나의 여분필드로 만들어 보았습니다.

https://sir.kr/g5_skin/52764

 

----------

 

마지막으로 일번페이지에 적용하는 방법입니다.

form 을 하나 감고 폼의 메소드를 post 로 주고 각각의 input 에 name 을 임의대로 주고 submit 를 줍니다.

 

<style>
input { display:block; width:300px; }
</style>
<button type="button" onclick="daumAddress()">주소검색</button>
<form action="address.php" method="post">
<input id="post_code" placeholder="우편번호" name="address_1" >
<input id="road_address" placeholder="기본주소" name="address_2">
<input id="detail_address" placeholder="상세주소" name="address_3">
<input type="submit">
</form>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
function daumAddress() {
    new daum.Postcode({
        oncomplete: function(data) {
            document.querySelector("#post_code").value = data.zonecode; // 우편번호
            document.querySelector("#road_address").value = data.roadAddress; // 기본주소
        }
    }).open();
    document.querySelector("#detail_address").focus();
}
</script>

 

액션 문서인 address.php 에서는 각 input 의 정보를

$_POST['address_1'] 과 $_POST['address_2'] 와 $_POST['address_3'] 의 포스트변수로 받아서 DB 에 저장하거나 또는 원하는 로직을 지지고 볶고 해 주면 되겠습니다.

css 는 본인의 취향대로요.

추천
7

댓글 6개

아는 지인이 이력서 게시판 하나 만들어 달라고 해서 주소 부분을 쉽게 처리하려고 살펴본 코드입니다. 코드는 어렵지 않으나 그 놈의 css 질 때문에. 영...

유용한 소스를 공개해주셔서 감사드립니다.
비타주리님 팁이 아니면 주소를 입력하는 것은 시도도 해보지 못할 것 같습니다.
여분필드에 주소를 복사해서 붙여넣기하는 방법으로 주소를 입력했을겁니다.^^
게시판에 테이블로 주소를 출력해보았습니다.
(제가 적용한 것을 공개하는 이유는 저와같은 초보자는 적용하기 쉽지않을 수도 있기때문에 복사해서 붙여넣기해서 작동이 잘되면 그때부터 재미를 느끼지 않을까 해서입니다^^)
http://gratia.kr/bbs/board.php?bo_table=diary_pc_mobile

write.skin.php
<!-- daum map insert start -->
<style>
input { display:block; width:500px; }
</style>
<button type="button" onclick="daumAddress()">주소검색</button>
<input id="post_code" placeholder="우편번호" name="wr_1" value="<?php echo $write['wr_1']; ?>">
<input id="road_address" placeholder="기본주소" name="wr_2" value="<?php echo $write['wr_2']; ?>">
<input id="detail_address" placeholder="상세주소" name="wr_3" value="<?php echo $write['wr_3']; ?>">

<!-- 모바일에서는 메모를 출력하지 않게 했습니다. -->
<input id="detail_memo" placeholder="메모" name="wr_4" value="<?php echo $write['wr_4']; ?>">     
     
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
function daumAddress() {
    new daum.Postcode({
        oncomplete: function(data) {
            document.querySelector("#post_code").value = data.zonecode; // 우편번호
            document.querySelector("#road_address").value = data.roadAddress; // 기본주소
        }
    }).open();
    document.querySelector("#detail_address").focus();
}
</script>
<!-- daum map insert end -->


view.skin.php
<!-- daum map insert start -->
<style>
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
</style>

 
<table>
  <tr>
    <th>우편번호</th>
    <th>주소 </th>
    <th>메모 </th>
  </tr>
  <tr>
    <td><?php echo $view['wr_1']; ?></td>
    <td><?php echo $view['wr_2']." ".$view['wr_3'];?> </td>
    <td><?php echo $view['wr_4']; ?></td>
  </tr>
 
</table>
<!-- daum map insert end -->
전체 2,431 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT