Geolocation API 는 프로그램을 실행하는 디바이스의 위치 정보를 얻기 위한 Javascript API이다.
메서드 3개로 이뤄진 간단한 API이다.
사용법
Geolocation API와 관련된 메서드는 모두 window.navigator객체에 정의 되어 있음.
현재 위치를 한번만 얻음
우선 디바이스의 현재 위치를 한번만 얻기 위한 메서드 getCurrentPosition()은 다음과 같이
정의 됨.
- getCurrentPosition(successCallback, errorCallback, options)
현재 위치 정보를 비동기로 확인한 다음 처리 결과를 인수로 하여 successCallBack을 한번만 호출
에러가 발생했을 때는 상세한 에러 정보를 인수로 하여 errorCallback을 호출
현재 위치 얻기
navigator.geolocation.getCurrentPosition(function(position) {
// 위치 정보를 이용하여 처리를 수행
alert("위도 : " + position.coords.latitude + "경도 : " + position.coords.longitude);
});
위치 정보 객체의 속성
coords
latitude : 위도
longitude : 경도
altitude : 표고(이용할 수없을 때는 null)
accuracy : 위도, 경도의 오차(단위와 미터)
altitudeAccuracy : 표고의 오차(단위와 미터)
heading : 디바이스의 진행 방향. 북쪽을 기준으로 한 시계 방향의 각도로 나타냄(이용할 수 없을 때는 null)
speed : 디바이스의 진행 속도(미터/초) 이용할 수 없을 때는 null
위치 정보를 계속 확인함.
watchPostion() 메서드를 이용하면 현재 위치를 계속 추적할 수 있고, 이 처리는 clearWatch()메서드를 호출하여 확인을 종료할 때까지 계속 된다.
- watchPosition(successCallback, errorCallback, option)
이 메서드를 호출하면 현재 위치 정보를 비동기로 확인하고 처리 결과를 인수로 지정한 콜백메서드를 호출한다. 그 후에도 콜백 메서드는 디바이스가 위치가 변경되었다고 판단할 때마다 계속 호출한다.
메서드의 반환값은 clearWatch()에 전달 할 수 있는 정수
- clearWatch(watchId)
watchPosition()가 반환한 정숫값을 인수로 하여 watchPosition()메서드를 종료한다.
위치 정보를 얻을 때의 옵션
getCurrentPosition() 과 watchPosition() 의 세 번째 인수에는 위치 정보 확인 처리를 제한하기 위한 옵션을 지정
현재 Geolocation API는 다음과 같은 속성르 가진 Javascript객체를 옵션으로 지정할 수 있다.
- enableHighAccuracy : 정확도가 높은 위치 정보를 요청
- timeout : 위치 정보 확인에 시간제한을 설정(밀리 세컨드). 시간제한을 초과하면 에러(TIME OUT)발생
- maximumAge : 위치 정보의 유효 기간을 설정함(밀리 세컨드). 현재의 위치 정보가 maximumAge보다 오래된 것이라면 해당 위치 정보는 폐기되고 새롭게 위치 정보 확인을 시도함. 0을 지정하면 항상 새로운 위치 정보를 확인함.
예제 코드
navigator.geolocation.getCurrentPosition(onSuccess, onError, {
enableHighAccuracy: true,
maximumAge : 0
});
[출처] Geolocation API|작성자 난이
다른 개발자분들은 어떠신지 잘 모르겠지만, 대용량 데이터베이스에서는 LIMIT만큼은 절대로 피해야 한다.
실제로 예전에 10억개의 데이터를 가공하는데 LIMIT를 쓰니 쿼리 하나가 몇일이 걸리는 사태가 발생하곤 했다.

간단하게 테스트 테이블을 만들어서 테스트 해보자. 데이터는 2천만개가 들어있다. 천만개째부터 5만개를 가져오는 쿼리이다.
11.216초 걸렸다.

EXPLAIN을 찍어보니 인덱스를 타지 않는것을 알 수 있다. 인덱스만 타도 좋을텐데...

위와 같이 쿼리를 바꿔보았다. 0.031초 걸렸다. 위와 같이 바꾸었을때 단점은 게시판처럼 동적으로 글이 늘어나는경우 IDX값을 정의하기 어렵다. 하지만 게시판 같은 경우에는 글쓴시각등으로 처리하는 방법등이 존재한다. 잘 고민하여 설계해 보자.

EXPLAIN을 찍어보니 인덱스를 타는것을 알 수 있다. 인덱스를 타고 천만번째로 바로 이동한 다음에 5만개를 가져올것이다._mixsh_wv_rdate = '2008/09/01 18:21';document.write("

Prev

Rss Feed