jiraynor’s 하루 2시간 프로그래밍 - HTML 47. 지리 위치 API (Geolocation API) 영상 보러가기
HTML 지리 위치 API
사용자 위치 찾기
HTML Geolocation API는 사용자의 지리적 위치를 얻기 위해 사용됩니다.
이로 인해 사생활이 침해될 수 있기 때문에 사용자가 승인하지 않으면 이 기능을 사용할 수 없습니다.
Note: GPS를 탑재한 기기(예: 스마트폰)에서 지리정보가 가장 정확합니다.
지원 브라우저
표의 숫자는 Geolocation을 완전히 지원하는 최소 브라우저 버전을 지정합니다.
브라우저 | 구글 Chrome | 마이크로소프트 Edge | Firefox | Safari | Opera |
버전 | 5.0 - 49.0 (http) 50.0 (https) |
9.0 | 3.5 | 5.0 | 16.0 |
Note: Chrome 50에서 Geolocation API는 HTTPS와 같은 보안 컨텍스트에서만 작동합니다. 사이트가 비보안 원본(HTTP 등)에서 호스팅되는 경우 사용자 위치를 가져오는 요청은 더 이상 작동하지 않습니다.
HTML 지리 위치 사용
getCurrentPosition()
메서드는 사용자의 위치를 반환하기 위해 사용됩니다.
다음 예제에서는 사용자 위치의 위도와 경도를 반환합니다.
예제 1
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
예제 설명 :
- Geolocation이 지원되는지 확인합니다.
- 지원되는 경우
getCurrentPosition()
메서드를 실행합니다. 그렇지 않은 경우 사용자에게 메시지를 표시합니다. getCurrentPosition()
메서드가 성공하면 파라미터(showPosition
)로 지정된 함수로 좌표 객체가 반환됩니다.showPosition()
함수는 위도와 경도를 출력합니다.
오류 및 거부 처리
getCurrentPosition() 메서드의 두 번째 파라미터는 오류 처리에 사용됩니다. 사용자 위치를 가져오지 못한 경우 실행할 함수를 지정합니다.
예제 2
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
x.innerHTML = "User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = "Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML = "The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML = "An unknown error occurred."
break;
}
}
로케이션 고유의 정보
지도에 사용자의 위치를 표시하는 방법을 시연했습니다.
지리 로케이션은 다음과 같은 로케이션 고유의 정보에도 매우 편리합니다.
- 최신 지역 정보
- 사용자 근처에 관심 지점 표시
- 턴 바이 턴 내비게이션(GPS)
getCurrentPosition()
메서드 - 데이터 반환
getCurrentPosition()
메서드는 성공 시 객체를 반환합니다. 위도, 경도 및 정확도 속성은 항상 반환됩니다. 사용 가능한 경우 다른 속성이 반환됩니다.
속성 | 반환 |
coords.latitude | 10진수로서의 위도(항상 반환) |
coords.longitude | 10진수로서의 경도(항상 반환) |
coords.accuracy | 위치 정확도(항상 반환) |
coords.altitude | 평균 고도(m)(사용 가능한 경우 반환) |
coords.altitudeAccuracy | 위치의 고도 정확도(사용 가능한 경우 반환) |
coords.heading | 북 기준 시계방향으로 도 단위 방향(사용 가능한 경우 반환 |
coords.speed | 속도(미터/초)(사용 가능한 경우 반환) |
timestamp | 응답 날짜/시간(사용 가능한 경우 반환됨) |
Geolocation 객체 - 기타 대상 메서드
Geolocation 객체에는 다른 메서드도 있습니다.
watchPosition()
- 사용자의 현재 위치를 반환하고 사용자가 이동할 때 업데이트된 위치를 계속 반환합니다(차량 내 GPS 등).clearWatch()
-watchPosition()
메서드를 중지합니다.
예제 3
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>