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

HTML5 지오로케이션 enableHighAccuracy: true와 false, 무엇을 사용해야 할까?

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 — 타임아웃 오류 발생 시 배터리 효율과 속도를 위해 재시도용으로 사용

두 옵션을 상황에 맞게 조합하면 정확도와 응답 속도 사이의 균형을 잡아 더 안정적인 위치 기반 서비스를 구현할 수 있습니다.