enableHighAccuracy 옵션이란?
HTML5 Geolocation API에서 enableHighAccuracy는 위치 정보의 정확도를 높이기 위한 선택적 옵션입니다. 이 값을 설정하면 기기가 GPS 등 더 정밀한 위치 확인 방식을 활용하도록 요청할 수 있습니다.
가장 정확한 위치 결과를 얻으려면 다음과 같이 값을 true로 설정하는 것이 좋습니다.
enableHighAccuracy: true
true로 설정했는데도 실패한다면?
enableHighAccuracy: true로 설정했음에도 결과를 가져오지 못하고 타임아웃(timeout) 오류가 발생하는 경우가 있습니다. 특히 실내 환경이나 GPS 신호가 약한 곳에서 자주 나타나는 문제입니다.
이럴 때는 값을 false로 바꿔서 다시 시도해 보세요. Wi-Fi 네트워크나 IP 기반 위치 추정 방식으로 전환되어 더 빠르고 안정적으로 결과를 받을 수 있습니다.
enableHighAccuracy: false
실전 예제 코드
타임아웃 오류를 처리하면서 두 가지 옵션을 순차적으로 시도하는 패턴은 다음과 같습니다.
navigator.geolocation.getCurrentPosition(
function(position) {
console.log('위도: ' + position.coords.latitude);
console.log('경도: ' + position.coords.longitude);
},
function(error) {
if (error.code === error.TIMEOUT) {
// 고정밀 모드 실패 시 저정밀 모드로 재시도
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {
enableHighAccuracy: false,
timeout: 10000,
maximumAge: 0
});
}
},
{
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
}
);브라우저 호환성
위 방식은 안드로이드(Android), 크롬(Chrome), 파이어폭스(Firefox) 등 주요 브라우저와 플랫폼에서 모두 정상적으로 동작합니다.
정리
- enableHighAccuracy: true — GPS 기반의 고정밀 위치가 필요할 때 우선 사용
- enableHighAccuracy: false — 타임아웃 오류 발생 시 배터리 효율과 속도를 위해 재시도용으로 사용
두 옵션을 상황에 맞게 조합하면 정확도와 응답 속도 사이의 균형을 잡아 더 안정적인 위치 기반 서비스를 구현할 수 있습니다.