• 회원가입
  • 로그인
  • 구글아이디로 로그인

[api] HTML5 - Geolocation - 사용자위치 (= 사용자 지리위치 = 지오로케이션)

목차
  1. Geolocation 예제 - 사용자위치 구글맵에 표시
  2. Geolocation 정의
  3. Geolocation 예제 - 사용자위치 표시 : (거부/오류) 처리 X
  4. Geolocation 예제 - 사용자위치 표시 : (거부/오류) 처리 O
  5. Geolocation 예제 - 정적인 지도에 표시
  6. getCurrentPosition() 메서드
  7. Geolocation 객체 유용한 메서드

 

Geolocation 예제 - 사용자위치 구글맵에 표시

 

<button onclick="getLocation()">클릭</button></p>

<div id="mapbox"></div>


<script src="https://maps.google.com/maps/api/js?key=구글맵발급키"></script>

<script>

var x=document.getElementById("demo");

function getLocation()

{

  if (navigator.geolocation)

    {

    navigator.geolocation.getCurrentPosition(hzCoords,hzError);

    }

  else{x.innerHTML="Geolocation 제공 않는 브라우저는 개나 줘버려.";}

}


function hzCoords(position)

{

  var lat=position.coords.latitude;

  var lon=position.coords.longitude;

  var latlon=new google.maps.LatLng(lat, lon)

  var mapbox=document.getElementById('mapbox')

  mapbox.style.height='250px';

  mapbox.style.width='100%';


  var hzOptions=

  {

  center:latlon,zoom:14,

  mapTypeId:google.maps.MapTypeId.ROADMAP,

  mapTypeControl:false,

  navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}

  };

  var map=new google.maps.Map(document.getElementById("mapbox"),hzOptions);

  var marker=new google.maps.Marker({position:latlon,map:map,title:"당신 위치 !!"});

}


function hzError(error)

{

  switch(error.code) 

    {

    case error.PERMISSION_DENIED:

      x.innerHTML="사용자가 정보제공 거부"

      break;

    case error.POSITION_UNAVAILABLE:

      x.innerHTML="위치정보 이용 불가"

      break;

    case error.TIMEOUT:

      x.innerHTML="위치정보 얻기 요청 시간초과"

      break;

    case error.UNKNOWN_ERROR:

      x.innerHTML="예상치 못한 에러 발생"

      break;

    }

}

</script>

 

구글맵 API키 발급: https://cloud.google.com/maps-platform/?hl=ko#products

 

Geolocation 정의

 

HTML Geolocation API는 사용자의 지리적 위치를 얻는 데 사용.

 


 

1.

개인정보 침해 소지가 있어, 사용자가 거부하면 이용 불가.


2.

지리위치는 스마트 폰과 같이 GPS 지원 장치가 가장 정확.

 

3.

IE9 이상 주요 최신 브라우저 모두 지원.

단, 크롬 50이상 최신 버전은 https 프로토콜에서만 가능.

 

4.

활용 예:


사용자 지역정보 제공
사용자 관심지점 표시
단계별 네비게이션  (GPS활용)


 

Geolocation 예제 - 사용자위치 표시 : (거부/오류) 처리 X

 

<button onclick="homzzang()">클릭</button>


<p id="demo"></p>


<script>

var x = document.getElementById("demo");


function homzzang() {

  if (navigator.geolocation) {

    navigator.geolocation.getCurrentPosition(hzCoords);

  } else { 

    x.innerHTML = "Geolocation 미지원 브라우저는 개나 줘버려.";

  }

}


function hzCoords(position) {

  x.innerHTML = "위도 : " + position.coords.latitude + 

  "<br>경도 : " + position.coords.longitude;

}

</script>

 

결과보기

getCurrentPosition() 메서드 :사용자 지리위치 반환

 

Geolocation 예제 - 사용자위치 표시 : (거부/오류) 처리 O

 

<button onclick="homzzang()">클릭</button>


<p id="demo"></p>


<script>

var x = document.getElementById("demo");


function homzzang() {

  if (navigator.geolocation) {

    navigator.geolocation.getCurrentPosition(hzCoords,hzError);

  } else { 

    x.innerHTML = "Geolocation 미지원 브라우저는 개나 줘버려.";

  }

}


function hzCoords(position) {

  x.innerHTML = "위도 : " + posisiton.coords.latitude + 

  "<br>경도 : " + position.coords.longitude;

}

 

function hzError(error)

{

  switch(error.code) 

    {

    case error.PERMISSION_DENIED:

      x.innerHTML="사용자가 정보제공 거부"

      break;

    case error.POSITION_UNAVAILABLE:

      x.innerHTML="위치정보 이용 불가"

      break;

    case error.TIMEOUT:

      x.innerHTML="위치정보 얻기 요청 시간초과"

      break;

    case error.UNKNOWN_ERROR:

      x.innerHTML="예상치 못한 에러 발생"

      break;

    }

 

}

</script>

 

결과보기

 

Geolocation 예제 - 정적인 지도에 표시

 

function hzCoords(position) {

  var latlon = position.coords.latitude + "," + position.coords.longitude;


  var img_url = "https://maps.googleapis.com/maps/api/staticmap?center=

  "+latlon+"&zoom=14&size=400x300&sensor=false&key=구글맵발급키";


  document.getElementById("mapbox").innerHTML = "<img src='"+img_url+"'>";

}

 

hzCoords() 함수를 위 함수로 교체

 

getCurrentPosition() 메서드

성공 시, 사용자위치정보 담긴 coords (좌표) 객체 반환


coords.latitude

위도. 10진수로 표현. (항상 반환)

 

coords.longitude

경도. 10진수로 표현. (항상 반환)

 

coords.accuracy

위치 정확성 (항상 반환)

 


 

coords.altitude

평균 해수면 위의 고도. 미터로 표현. (가능한 경우 반환)

 

coords.altitudeAccuracy

위치의 고도 정확도 (가능한 경우 반환)

 

coords.heading

향하는 방향. 시계방향으로 동서남북 표시 (0도:북 / 90도:동 / 180도: 남 / 270도: 서)  (가능한 경우 반환)

 

coords.speed
초당 미터 속도 (가능한 경우 반환)

 

timestamp

응답 날짜/시간 (가능한 경우 반환)

 

 

Geolocation 객체 유용한 메서드

 

watchPosition()

사용자 현재위치 반환 후, 사용자 이동 시 업데이트 된 위치를 계속 반환. (예: 자동차의 GPS)

 

clearWatch()

watchPosition() 메서드를 중지시킴.

 


[예제]

 

<button onclick="homzzang()">클릭</button>


<p id="demo"></p>


<script>

var x = document.getElementById("demo");


function homzzang() {

  if (navigator.geolocation) {

    navigator.geolocation.watchPosition(hzCoords);

  } else { 

    x.innerHTML = "Geolocation 지원 않는 브라우저는 개나 줘버려.";

  }

}

    

function hzCoords(position) {

    x.innerHTML="위도 : " + position.coords.latitude + 

    "<br>경도 : " + position.coords.longitude;

}

</script>

 

결과보기

※ 예제 확인하려면, 스마트 폰과 같은 정확한 GPS 장치 필요.

 


분류 제목
attribute HTML - method 속성 ★★★ - 폼데이터 전송방식 지정 (= method속성 = 메서드속성/메소드속…
attribute HTML - onseeking 속성 - (오디오/비디오) 재생위치 변경 시작 시, 실행할 코드 지정. (= …
attribute HTML - rel 속성 ★ - 링크문서가 현재문서와 어떤 관계인지 지정 (= rel속성 = 릴속성/렐속성)
form HTML - <input type="email"> 태그 - 이메일 입력 (= 인풋이메일타입/이메일타입인풋/이…
attribute HTML - controls 속성 - (오디오/비디오) 플레이어의 제어창 표시 여부 (= controls속성…
attribute HTML - ondragover 속성 - 드래그 한 요소가 드롭박스 위에 위치 시 실행 (= ondragov…
attribute HTML - onbeforeprint 속성 - 인쇄 대화상자 나타나기 이전 이벤트 발생 시 실행할 코드 정의…
attribute HTML - onresize 속성 ★ - 브라우저창크기 변경 시 실행 (= onresize속성 = 온리사이즈…
attribute HTML - loading 속성 - 이미지 레이지로드 여부 지정 (= loading속성 = 로딩속성) ※ …
attribute HTML - name 속성 ★★★ - 요소 이름 지정 (= name속성 = 네임속성) ※ 요소이름/요소명
attribute HTML - onmousemove 속성 ★ - 마우스커서가 지정요소 안으로 이동 시 실행 (= onmouse…
attribute HTML - min 속성 - (숫자|날짜)의 최소값 지정 (= min속성 = 민속성) ※ 최솟값
attribute HTML - id 속성 ★★★★★ - 요소 고유식별자 지정 (= id속성 = 아이디속성) ※ CSS 아이디선…
attribute HTML - onhashchange 속성 - 링크 해시값 변경 시 실행 (= onhashchange속성 = …
attribute HTML - cellpadding 속성 - 테이블 셀 내부의 여백 지정 (= cellpadding속성 = 셀…
attribute HTML - ondragend 속성 - 드래그 종료 시 실행 (= ondragend속성 = 온드래그엔드속성)…
attribute HTML - http-equiv 속성 - content 속성의 정보/값에 대한 HTTP 헤더 제공 (= ht…
attribute HTML - rev 속성 - (HTML5 지원 X) 현재 웹문서가 타웹문서와 어떤 관계인지 지정 (= re…
attribute HTML - oncuechange 속성 - 트랙의 큐(캡션/자막) 변경 시 실행 (= oncuechange속…
attribute HTML - onkeyup 속성 ★ - 키보드키 올라갈 때 실행 (= onkeyup속성 = 온키업속성) ※ …
3/18
목록
찾아주셔서 감사합니다. Since 2012