JavaScript – 휴대폰 GPS 로 현재위치 조회하기

By | 2026년 2월 1일
Table of Contents

JavaScript – 휴대폰 GPS 로 현재위치 조회하기

안드로이드나 아이폰의 크롬 브라우저는 웹 표준 API인 Geolocation API를 지원하기 때문에, 자바스크립트를 사용해 사용자의 위도와 경도 정보를 실시간으로 가져올 수 있습니다.

GPS 정보 가져오기

if ("geolocation" in navigator) {
  // 위치 정보 가져오기 시도
  navigator.geolocation.getCurrentPosition(
    (position) => {
      const lat = position.coords.latitude; // 위도
      const lon = position.coords.longitude; // 경도
      console.log(`위도: ${lat}, 경도: ${lon}`);
      alert(`현재 위치 - 위도: ${lat}, 경도: ${lon}`);
    },
    (error) => {
      // 에러 처리 (권한 거부, 위치 확인 불가 등)
      console.error("에러 발생: " + error.message);
    },
    {
      enableHighAccuracy: true, // 높은 정확도 사용 (GPS 우선)
      timeout: 5000,            // 5초 안에 응답 없으면 에러
      maximumAge: 0             // 캐시된 위치 대신 항상 새로 측정
    }
  );
} else {
  alert("이 브라우저는 위치 정보를 지원하지 않습니다.");
}

기준점과의 거리 계산

장거리가 아닌 반경 1km 이내에서의 거리를 계산합니다.
기준점에 가까이 있는가만 계산하는 것을 목표로 하므로,
원거리 계산에는 다른 로직을 적용해야 합니다.

function getPreciseDistance(lat1, lon1, lat2, lon2) {
    const R_METERS = 6378137; // 지구 반지름 (m)
    const dLat = (lat2 - lat1) * Math.PI / 180;
    const dLon = (lon2 - lon1) * Math.PI / 180;

    // 평균 위도에 대한 코사인 보정값 계산
    const cosLat = Math.cos((lat1 + lat2) / 2 * Math.PI / 180);

    const x = dLon * R_METERS * cosLat;
    const y = dLat * R_METERS;

    return Math.sqrt(x * x + y * y); // 단위: 미터(m)
}

// 사용 예시
const dist = getPreciseDistance(37.5665, 126.9780, 37.5668, 126.9783);
console.log(`두 지점 사이의 거리: ${dist.toFixed(2)}m`);
Category: Web

답글 남기기