Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

SSL 연결 없이 HTML5 Geolocation(지리적 위치) API 사용하는 방법

SSL 연결 없이 HTML5 Geolocation 활용하기

HTML5의 Geolocation API는 사용자의 현재 위치(위도와 경도)를 파악할 때 사용됩니다. 일반적으로 브라우저의 Geolocation 기능은 보안상의 이유로 HTTPS(SSL) 연결이 필요하지만, Google Maps Geolocation API를 활용하면 SSL 연결 없이도 사용자의 위치 정보를 얻을 수 있습니다.

1. 성공 콜백 함수 작성

먼저 위치 조회에 성공했을 때 결과를 처리할 콜백 함수를 정의합니다. 아래 예제에서는 apigeo 변수가 성공적인 위치 조회를 담당하며, 획득한 위도(latitude)와 경도(longitude)를 알림 창으로 표시합니다.

// apigeo 변수는 성공적인 위치 조회를 나타냅니다.
var apigeo = function(position) {
    alert("API geolocation success!\n\nlat = " + position.coords.latitude + "\nlng = " + position.coords.longitude);
};

var tryapigeo = function() {
    jQuery.post("check the location on google map", function(success) {
        apiGeolocationSuccess({coords: {latitude: success.location.lat, longitude: success.location.lng}});
    }) // 주어진 지리적 위치에 대해 성공 시 실행
    .failure(function(err) { // 실패 시 오류 알림 표시
        alert("error while showing geolocation! \n\n" + err);
    });
};

2. 브라우저 Geolocation 호출하기

다음으로, 브라우저 자체의 navigator.geolocation 객체를 사용해 현재 위치를 조회하는 함수를 작성합니다. 아래 코드에서 tryloc 변수는 현재 위치를 가져오는 역할을 하며, 높은 정확도(high accuracy) 옵션을 설정하여 더 정밀한 결과를 얻습니다.

var tryloc = function() { // tryloc 변수는 현재 위치를 표시합니다.
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            browserGeolocationSuccess,
            browserGeolocationFail,
            {
                maximumAge: 70000,   // 캐시된 위치의 최대 유효 시간(ms)
                timeout: 40000,      // 위치 조회 제한 시간(ms)
                enableHighAccuracy: true // 높은 정확도로 결과 표시
            });
    }
};

3. 오류 코드별 예외 처리

위치 조회 과정에서는 다양한 이유로 오류가 발생할 수 있습니다. 예를 들어 사용자가 권한 요청을 거부하거나(PERMISSION_DENIED), 위치를 확인할 수 없거나(POSITION_UNAVAILABLE), 제한 시간이 초과되는(TIMEOUT) 경우입니다.

따라서 마지막 단계에서는 오류 코드(error code)별로 switch 문을 구성하여, 발생한 오류의 종류에 따라 서로 다른 메시지나 대체 동작을 처리하면 됩니다. 이렇게 하면 어떤 상황에서 실패했는지 명확하게 구분할 수 있어 디버깅과 사용자 안내에 큰 도움이 됩니다.

정리

SSL 연결 없이 HTML5 Geolocation을 사용하려면 ① 성공 콜백 함수 정의 → ② 브라우저 또는 외부 API를 통한 위치 조회 → ③ 오류 코드별 예외 처리의 세 단계를 순서대로 구현하면 됩니다. 특히 타임아웃과 정확도 옵션을 적절히 조정하면 다양한 환경에서 안정적으로 위치 정보를 얻을 수 있습니다.