닷넷덕후 (ASP.NET Tips)

ASP.net 반경검색을 위한 다음 로컬 API 사용 TM 좌표 가져오기

힐링스케치 2015. 11. 25. 17:39

aspx페이지
 다음 우편번호 API를 이용해 sample6_execDaumPostcode() 함수에서 받은 우편번호 주소로 
다음 로컬 API를 이용한 WGS84()  함수에서 경위도를 받은후
GetTM함수에서 TM좌표로 변환하여 JSON으로 받아 사용하는 코드입니다
* APPKEY는 DAUM에서 발급받은 로컬API사용 APPKEY 입니다(다음 API페이지 참조)
*TM좌표는 지구 타원체를 평면에 투영한 좌표로 반경검색 및 거리계산에 유용한 평면좌표입니다


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="../js/jquery-1.8.3.min.js"></script>
     <script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
     
    <script>
        function sample6_execDaumPostcode() {
            new daum.Postcode({
                oncomplete: function (data) {
                    // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.

                    // 각 주소의 노출 규칙에 따라 주소를 조합한다.
                    // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
                    var fullAddr = ''; // 최종 주소 변수
                    var extraAddr = ''; // 조합형 주소 변수
                    var dong = '';

                    // 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
                    if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
                        fullAddr = data.jibunAddress;

                    } else { // 사용자가 지번 주소를 선택했을 경우(J)
                        fullAddr = data.jibunAddress;

                    }

                    dong = data.bname;
                    // 사용자가 선택한 주소가 도로명 타입일때 조합한다.
                    if (data.userSelectedType === 'R') {
                        //법정동명이 있을 경우 추가한다.
                        if (data.bname !== '') {
                            extraAddr += data.bname;
                        }
                        // 건물명이 있을 경우 추가한다.
                        if (data.buildingName !== '') {
                            extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
                        }
                        // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
                        fullAddr += (extraAddr !== '' ? ' (' + extraAddr + ')' : '');
                    }

                    // 우편번호와 주소 정보를 해당 필드에 넣는다.
                    // document.getElementById("ContentPlaceHolder1_WUC_BizCompanyReg_sample6_postcode").value = data.postcode; //6자리 우편번호 사용
                    document.getElementById("sample6_postcode").value = data.zonecode; //5자리 기초구역번호 사용
                    document.getElementById("sample6_address").value = fullAddr;

                    document.getElementById("txtLat").value = "";
                    document.getElementById("txtLon").value = "";
                    document.getElementById("txtXTM").value = "";
                    document.getElementById("txtYTM").value = "";

                }
            }).open();

        }
</script>
   

 <script>
     function getWGS84() {

        //var getaddr = document.getElementById("sample6_address").value;
         //if (getaddr = "") {
         //    alert("우편번호를 먼저 입력하세요");
         //    return false;
         //}

         var getaddr = document.getElementById("sample6_address").value;
         var url = "http://apis.daum.net/local/geo/addr2coord?apikey=APPKEY&q=" + getaddr + "&output=json";
         // alert(url);
         $.getJSON(url + "&callback=?", function (data) {

             $.each(data.channel.item, function (i, item) {

                 var lat = item.point_y;
                 var lng = item.point_x;
                 document.getElementById("txtLat").value = lat;
                 document.getElementById("txtLon").value = lng;
             });

             getTm();

         });

     }


     function getTm() {

         var lat = document.getElementById("txtLat").value;// '37.53717415102401';
         var lng = document.getElementById("txtLon").value;// '127.00558034774673';

         var url1 = "http://apis.daum.net/local/geo/transcoord?apikey=APPKEY&fromCoord=WGS84&y=" + lat + "&x=" + lng + "&toCoord=TM&output=json";

         //  alert(url1);

         $.getJSON(url1 + "&callback=?", function (data) {

             //alert(data.x);
             //alert(data.y);
             document.getElementById("txtXTm").value = data.x;
             document.getElementById("txtYTm").value = data.y;
         });
     }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
     
        <div id="list"></div>
        <br />
        <br />
                            <asp:TextBox ID="sample6_postcode" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="65px"></asp:TextBox>
                                
                            <asp:TextBox ID="sample6_address" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="500px" placeholder="우편번호찾기 클릭하여 주소를 입력 하세요"></asp:TextBox>
                                    
                            <input type="button" id="btnpost" onclick="sample6_execDaumPostcode(); " value="우편번호 찾기" style="width:100px;">
        <br />
        경위도
                        
                            <asp:TextBox ID="txtLat" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="200px" MaxLength="40" onchange="tri();" ClientIDMode="Static"></asp:TextBox>
                             <asp:TextBox ID="txtLon" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="200px" MaxLength="40" ClientIDMode="Static"></asp:TextBox>
                       <br />
        TM좌표<asp:TextBox ID="txtYTm" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="200px" MaxLength="40" ClientIDMode="Static"></asp:TextBox>
                            <asp:TextBox ID="txtXTm" runat="server" BorderColor="#b9b9b9" BorderWidth="1px" Height="22px" Width="200px" MaxLength="40"  ClientIDMode="Static"></asp:TextBox>
                           
                          <input type="button" id="btnGetWGS84"  onclick="getWGS84(); " value="좌표가져오기" style="width:120px;"><br />
    
        <br />
          </div>

    </form>
</body>
</html>




                                                                                   -------  닷넷덕후 ------

--  힐링스케치 --