DEV Community

ebizkorea
ebizkorea

Posted on

geolocation 이용한 위치정보

if (navigator.geolocation) { // GPS를 지원하면
//navigator.geolocation.watchPosition(function(position) { //위치정보를 계속해서 관제
navigator.geolocation.getCurrentPosition(function(position) { //단발성으로 현재 위치값

    var latitude = position.coords.latitude;     // 위도
    var longitude = position.coords.longitude; // 경도

    var xhr = new XMLHttpRequest(); //결과를 받아오기위한 xhr객체 선언
    var formData = new FormData(); //POST로 보내기 위한 폼데이터 객체
    formData.append('latitude', latitude); //위도 객체 추가
    formData.append('longitude', longitude); // 경도 객체 추가
    formData.append('gpsok', 1);

    xhr.onreadystatechange = function() { // 요청에 대한 콜백
        /** 보내는 과정중에 보여줄 메시지 처리. 사이트 속도가 빠르다면 하지 않아도 됩니다
        순서 UNSENT, OPENED, HEADERS_RECEIVED, LODING
        */
        if (xhr.readyState === xhr.UNSENT) {
        //document.querySelector('.at-footer').innerHTML = xhr.responseText;
        }
        if (xhr.readyState === xhr.OPENED) {
        //document.querySelector('.at-footer').innerHTML = xhr.responseText;
        }
        if (xhr.readyState === xhr.HEADERS_RECEIVED) {
        //document.querySelector('.at-footer').innerHTML = xhr.responseText;
        }
        if (xhr.readyState === xhr.LOADING) {
        //document.querySelector('.at-footer').innerHTML = xhr.responseText;
        }

        if (xhr.readyState === xhr.DONE) { // 요청이 완료되면
            if (xhr.status === 200 || xhr.status === 201) {
                // document.querySelector('.at-footer').innerHTML = xhr.responseText; //해당 요소 안에 들어있는 요소를 삭제하고 덮어씌움
                document.querySelector('#apparea').innerHTML += xhr.responseText; //기존 요소를 삭제하지 않고 추가 하는 식.
            } else {
                document.querySelector('#apparea').innerHTML += xhr.responseText; // 받아오는 페이지의 에러(응답불가, 문법 오류등으로 인해 받아오지 못했을때 처리하는 부분)
            }
        }
    };

    // 여기로 보낼때 반응이 늦을수 있어서 url로 바로 보냄
    //xhr.open('POST', '<?php echo EBIZ_APP_URL; ?>/gps__search__ok.php'); // 보낼 경로지정
    //xhr.send(formData); //보냄

    <?php if($set_app_after_url){ ?>
        location.href = "<?php echo $set_app_after_url;?>?latitude="+latitude+"&longitude="+longitude+"&gpsok=1";
    <?php } else { ?>
        location.href = "/?latitude="+obj+"&longitude="+obj2+"&gpsok=1";
    <?php } ?>

}, function(error) {
    console.error(error);
    alert("내 위치 확인을 허용 후 이용해주세요.");
}, {
    enableHighAccuracy: false,
    maximumAge: 0,
    timeout: Infinity
});
Enter fullscreen mode Exit fullscreen mode

} else {
alert("위치 정보를 지원하지 않는 시스템입니다.");
}

Top comments (0)