본문 바로가기
Developer/VB6

VB6 에서 다음 우편번호검색 Api 사용하기 / 주소검색 /VB6 / 도로명/ 도로명주소

by MindOpener 2016. 1. 21.
반응형

VB6 구 프로그램에서 주소검색을 수동으로 우체국 DB 를 다운받아서 업데이트 해서 쓰는 환경이었다. 

매번 우체국에서 자주 업데이트를 해야 하는 난감한 상황.


웹에는 이미 다음 우편번호 검색 API 를 사용 중이어서 


이놈을 어떻게 하면 쓸수 있을까 고민해 보았다. 



1. 부모폼.


Form1 


Private Sub Text1_DblClick()

  Set daumZipSearch.addr4 = Text1  

  daumZipSearch.Show ' form2 를 연다.

End Sub


2. 웹 호출 품.
daumZipSearch


Public addr4 As TextBox    '검색 동 /도로명 /빌딩명 받는 부분... 


Private Sub Command1_Click()    ' 결과를 부모폼에 반영..

    Dim zipcode3 As String

    Dim addr3 As String

    Dim sndPri3 As String

    

   ' asp 문서에서 값을 받아옴.. 

    zipcode3 = WebBrowser1.Document.getElementsByName("zipcode")(0).value

    addr3 = WebBrowser1.Document.getElementsByName("addr1")(0).value

    sndPri3 = WebBrowser1.Document.getElementsByName("sndPri")(0).value

  

    frmMebOrd.txtRcvZip = zipcode3

    frmMebOrd.txtRcvAdr1 = addr3

    frmMebOrd.txtDosun = sndPri3

    Me.Hide

End Sub


Private Sub Form_Load()    '웹 API 페이지 호출 ..

        Me.hwnd = True

        

         Me.Width = 5325

         Me.Height = 5400

         Me.Caption = "Mini browser"

         With WebBrowser1

             .Visible = True

         '   .Width = 0

         '    .Height = 0

             .Top = 600

             .Left = 240

         End With

         

    WebBrowser1.Navigate "http://xxx.xxx.com/api/daumapi.asp?q=" & addr4.Text  '  검색어 전달...

End Sub



3. html, asp   API 문서 ..


<!--autoload=false 파라미터를 이용하여 자동으로 로딩되는 것을 막습니다.-->

<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js?autoload=true"></script>

<script>

    //load함수를 이용하여 core스크립트의 로딩이 완료된 후, 우편번호 서비스를 실행합니다.

    daum.postcode.load(function(){

        new daum.Postcode({

            oncomplete: function(data) {

                // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분입니다.

                // 예제를 참고하여 다양한 활용법을 확인해 보세요.

                // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.


                // 도로명 주소의 노출 규칙에 따라 주소를 조합한다.

                // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.

                var fullRoadAddr = data.roadAddress; // 도로명 주소 변수

                var extraRoadAddr = ''; // 도로명 조합형 주소 변수


                // 법정동명이 있을 경우 추가한다. (법정리는 제외)

                // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.

                if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){

                    extraRoadAddr += data.bname;

                }

                // 건물명이 있고, 공동주택일 경우 추가한다.

                if(data.buildingName !== '' && data.apartment === 'Y'){

                   extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);

                }

                // 도로명, 지번 조합형 주소가 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.

                if(extraRoadAddr !== ''){

                    extraRoadAddr = ' (' + extraRoadAddr + ')';

                }

                // 도로명, 지번 주소의 유무에 따라 해당 조합형 주소를 추가한다.

                if(fullRoadAddr !== ''){

                    fullRoadAddr += extraRoadAddr;

                }


                // 우편번호와 주소 정보를 해당 필드에 넣는다.

  

   document.getElementById('zipcode').value = data.zonecode; //5자리 새우편번호 사용

                document.getElementById('addr1').value = fullRoadAddr;

               

  

            }

       }).open({ 

popupName: 'postcodePopup',

q: '<%=request("q")%>'}

);

    });

</script>

<input type='text' name='zipcode' id="zipcode"> 

<input type='text' name='addr1' id="addr1"> 


순서는..


1. 1번폼에서 

2. 2번폼 호출 --> 웹페이지 로딩 --> 다음 주소검색 호출  -->검색 선택  --> 폼에 값 저장.. --> 반영 클릭.

3. 1번폼에서 값 전달 받음.








반응형

'Developer > VB6' 카테고리의 다른 글

다른 폼 로드, 폼 매개변수 넘기기  (0) 2016.07.26