도로명주소 검색 API :: Xeno Zip Finder

좀 더 직관적인 신형 API 를 이용하세요. 바로가기 - 기존 API 도 계속 유지됩니다.

현행 최신 일간 데이터로 유지됩니다.

9월 초 에 우편번호가 삭제되고 기초구역번호로 대체됩니다.

이는 행정자치부에서 제공하지 않기 때문입니다.

현재 기초구역번호로 대체되었고 일변동자료가 매일 업데이트 됩니다.

자료출처

jQuery UI 예제

select2 (모바일 대응) 예제


우편번호 /* 9월 초 에 기초구역번호 정보로 대체됩니다. */
주소
상세주소
영문주소
영문상세주소
기초구역번호



공지

도로명주소 api 의 변경사항을 메일로 공지해 드립니다.

db 업데이트나 기능추가 등의 기본적인 사항과, 유료 api 에 적용되는 내용 등이 메일링 될 예정입니다.

[email protected] 로 아무렇게나 메일을 보내시면 메일링 리스트에 가입하실 수 있습니다.

[email protected] 로 보내시면 탈퇴됩니다.

웹에서 보기

국내은행

도로명주소 api 를 이용하는 사이트 목록

이번달지난달

사용률이 높은곳의 자발적 후원을 기대합니다.

org, or.kr, go.kr, ac.kr 등에서는 사용률이 낮더라도 후원좀 해주세요.

도로명주소 api 배포 목적

복잡한 검색 UI 에 익숙해서 심플한 검색창에 적응이 어렵다고 판단,

널리 퍼뜨려서 강제로 익숙해지도록 하는 것이 목적입니다.

그렇기 때문에 본 도로명검색 api 는 제공되는 방식으로만 이용하실 수 있습니다.

도움말 label 을 없애는 등, 제공되는 방식이 아닌 이용이 감지되면 최대한 차단할 것입니다.

검색방법의 변경은 구매해서 해 주세요.^^

한 ip 에서 수백,수천건 검색이 일어나는 경우 서버에서 직접 조회하는 것으로 판단하고 차단하고 있습니다.

정상적인 이용방식이라면 검색이 많은 이유와 해당 ip 를 알려주시면 해제해 드립니다.

(팩스를 받아 일괄 처리하는 등 애초에 검색이 많을 것 같으면 ip (18.221.98.71 - 접속한 pc의 ip 입니다.) 를 미리 알려주세요.)

소개

현존하는 도로명주소 검색 방법 중 가장 심플합니다.

검색을 LIKE %검색어% 나 외부검색엔진에 의존하지 않고 직접 구현하여 정확도가 높아서 쓸데없는 결과가 나올 확률이 적습니다.

그럼에도 검색결과가 많을 경우에 결과 수량을 제한하지 않고, 편리하게 선택할 수 있는 UI 를 제공하여 더욱 편리합니다.

nginx + php + sqlite3 로 제작되어 있습니다. 복잡한 검색도 별도의 캐싱 없이 1초 미만으로 결과가 나옵니다.

직접 적용할 인력이 없는 경우 비용을 받고 웹페이지에 적용해 드립니다. (30만원)

제공 : 디코시스템

서버설치형 문의 : shj@xenosi.de

roadzip.min.js

솔루션에 적용시에는 주소 검색 근처 잘 보이는 곳에 출처를 표기해주시기 바랍니다.

디자인은 전적으로 jQuery UI 의 autocomplete 기능입니다.

수정을 하는 것이 아닌 css 확장으로 디자인을 변경하시면 됩니다.

jQuery UI Dialog 안의 div 는 XenoZipDialog 라는 class 명이 붙습니다.

jQuery UI Dialog 자체에는 XenoZipDialogBox 라는 class 명이 붙습니다.

검색안내 label 에 검색 완료 후, jQuery UI dialog 에 XenoZipFinder API 링크가 추가됩니다.

roadzip.mobile.min.js

select2 너무 느리네요. 조만간 다른걸로 다시 만들어야겠습니다.

검색결과인 select2 화면의 placeholder 에 출처표기가 들어있습니다.

추후 select2 UI 가 나올 때 작은 광고가 나올 수도 있습니다.

모바일에서 jQuery UI 가 보기 힘들기 때문에 만들었지만, pc 에서도 충분히 편합니다. 단, ie는 10 부터 호환됩니다.

디자인은 일반 select 와 select2 에 의존합니다.

검색에 이용되는 input 태그 뒤에 $(input).after('새 select') 이런식으로 붙였다가 삭제하도록 되어있습니다.

select2 디자인은 http://ivaynberg.github.io/select2/ 를 참조하시어 확장하시고

select 디자인은 부모태그(label 같은)에 className 을 주어 스타일을 적용하세요.

display:block 속성을 주어 가로가 자연스럽게 100% 가 되도록 되어 있습니다.

가로가 너무 길어지는것을 방지하려면 부모태그의 크기를 제한하세요.


엔터 대신 검색버튼을 이용하려면 $('#findButton').on('click', function() { $('input.XenoFindZip').trigger('keyup', [true]); return false; }); 와 같이 이벤트를 발생시키면 됩니다.

데이터를 제공된 형식이 아닌 원본을 받으려면 callback 을 이용하면 됩니다. 하단 예제 소스 참조.

제공되는 '검색결과를 가져오는 중 입니다.' 문구 이상의 로딩중 화면은 $.ajaxStart(), $.ajaxStop() 을 이용하세요.

과도한 검색을 불허합니다. ( 너무 빨리 여러번 검색하는것만 제한되어 있습니다. ip 기준이므로, 공유기를 사용하는 pc방급 시설에서 다 함께 도로명을 검색한다면-_-; 약간 문제가 있을 수도 있습니다. )

검색결과를 도로명주소 표기방법에 맞췄습니다.

상세주소 괄호안에 지번주소의 번지를 포함했습니다. 아무래도 택배하시는 분들은 지번주소가 있어야 편합니다.

2015년에 국가기초구역번호가 우편번호를 대체한다고 합니다.


<!-- jquery 가 필요합니다. --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js"></script> <!-- roadzip.min.js --> <!-- roadzip.min.js 을 이용하려면 jquery ui 가 필요합니다. --> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.min.css" /> <!-- 구버전 IE 에 placeholder 지원 : https://code.google.com/p/jqueryplaceholder/ --> <!-- ssl 대응 됩니다. cdn 이용하듯 서버에 저장하지 말고 그대로 링크하세요. 예고 없이 스크립트가 변경될 수 있으며, 저장할 경우 호환되지 않을 수 있습니다. 이곳에 적혀 있는 이용방법대로만 이용해주세요. --> <link rel="stylesheet" href="//xenosi.de/load/roadzip/roadzip.css" /> <script src="//xenosi.de/load/roadzip/roadzip.min.js"></script> <script> $(function() { $('input.XenoFindZip').each(XenoZipFinder); // input 에 검색스크립트 연결 }); </script> <!-- / roadzip.min.js --> <!-- roadzip.mobile.min.js --> <!-- roadzip.mobile.min.js 을 이용하려면 select2 가 필요합니다. http://ivaynberg.github.io/select2/ --> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.css" /> <script src="//cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.js"></script> <!-- ssl 대응 됩니다. cdn 이용하듯 서버에 저장하지 말고 그대로 링크하세요. 예고 없이 스크립트가 변경될 수 있으며, 저장할 경우 호환되지 않을 수 있습니다. 이곳에 적혀 있는 이용방법대로만 이용해주세요. --> <script src="//xenosi.de/load/roadzip/roadzip.mobile.min.js"></script> <script> $(function() { $('input.XenoFindZipMobile').each(XenoZipFinderMobile); // input 에 검색스크립트 연결 }); </script> <!-- / roadzip.mobile.min.js --> <form> <!-- roadzip.min.js --> <label> <input type="text" class="XenoFindZip" placeholder="엔터를 누르면 검색됩니다." /> <span class="XenoFindZipLabel"></span> </label> <!-- roadzip.mobile.min.js --> <label> <p class="XenoFindZipLabel"></p> <input type="search" placeholder="주소를 검색하세요." class="XenoFindZipMobile" data-callback="zipCallback"> </label> <!-- 사용하지 않는 필드는 생략해도 오류나지 않습니다. --> <table> <tbody> <tr> <td>우편번호</td> <td><input type="text" name="zipcode"></td> </tr> <tr> <td>주소</td> <td><input type="text" class="addr" name="addr"></td> </tr> <tr> <td>상세주소</td> <td><input type="text" class="addr" name="addr_remain"></td> </tr> <tr> <td>영문주소</td> <td><input type="text" class="addr" name="addr_en"></td> </tr> <tr> <td>영문상세주소</td> <td><input type="text" class="addr" name="addr_remain_en"></td> </tr> <tr> <td>기초구역번호</td> <td><input type="text" name="regionno"></td> </tr> </tbody> </table> </form> <!-- 자동으로 채워지는 필드명을 선택하는 방법 예제 --> <form> <label> <input type="text" class="XenoFindZip" placeholder="엔터를 누르면 검색됩니다." data-z="zip" data-a="ad" data-r="adr" data-e="ade" data-n="n"> <span class="XenoFindZipLabel"></span> </label> <table><!-- 사용하지 않는 필드는 생략해도 오류나지 않습니다. --> <tbody> <tr> <td>우편번호</td> <td><input type="text" name="zip"></td> </tr> <tr> <td>주소</td> <td><input type="text" class="addr" name="ad"></td> </tr> <tr> <td>상세주소</td> <td><input type="text" class="addr" name="adr"></td> </tr> <tr> <td>영문주소</td> <td><input type="text" class="addr" name="ade"></td> </tr> <tr> <td>영문상세주소</td> <td><input type="text" class="addr" name="adre"></td> </tr> <tr> <td>기초구역번호</td> <td><input type="text" name="n"></td> </tr> </tbody> </table> </form> <!-- callback 으로 원본 데이터 받아오는 예제 --> <script> function zipCallback(row) { console.log(row); // ie 구버전에는 없으니 주의. /* bseq, zseq, // seq (내부적으로만 이용하는 일련번호. 업데이트시 바뀜 - 이용하지 마세요.) lad1, // 시도명 lad1_en, // 시도 로마자 lad2, // 시군구명 lad2_en, // 시군구 로마자 lad3, // 법정읍면동명 lad3_en, // 법정읍면동 로마자 lad4, // 법정리명 lad4_en, // 법정리 로마자 lawdongcode, // 법정동코드 mountain, // 산여부 0:대지, 1:산 bunji1, // 지번본번 bunji2, // 지번부번 roadcode, // 도로명코드 (시군구코드5 + 도로명번호7) basement, // 지하여부 0:지상, 1:지하, 2:공중 building1, // 건물본번 building2, // 건물부번 sbuildingname, // 건축물대장 건물명 buildingname, // 상세건물명 buildingcode, // 건물관리번호 buildingcode AS roadaddrcode, dongcode, // 읍면동일련번호 admindongcode, // 행정동 코드 zipcode, // 우편번호 zipseq, // 우편번호일련번호 hugedelivery, // 다량배달처명 abuildingname, // 시군구 건물명 apartment, // 공동주택여부 0: 비공동주택, 1: 공동주택 regionno, // 기초구역번호 deepaddr, // 상세주소 부여여부 0: 미부여, 1: 부여 roadname, // 도로명 roadname_en, // 도로명 로마자 admindongname, // 행정동명 admindongname_en, // 행정동명 로마자 isdong // 동 여부 */ } </script> <form> <label> <input type="text" class="XenoFindZip" placeholder="엔터를 누르면 검색됩니다." data-callback="zipCallback"> <span class="XenoFindZipLabel"></span> </label> </form>
국내은행