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`);