웹 브라우저에서 GPS 위치 확인


164

모바일 기반 웹 사이트를 개발 중이며 Google지도를 통합했으며 Google지도의 '보낸 사람'입력란을 동적으로 채워야합니다.

웹 브라우저에서 GPS 위치를 가져 와서 Google지도의 '보낸 사람'입력란에 동적으로 채울 수 있습니까?


2
어떤 휴대폰을 지원하려고합니까?
Rowland Shaw

모든 모바일 브라우저를 지원하고 싶지만 i-phone이 최우선입니다
Ganesh


16
필요가 위치에만 관한 것이라면 네이티브 앱은 지나치게 과잉입니다. iOS는 모바일 만이 아니라 우선 순위입니다.
Gonçalo Veiga

답변:


194

당신이 사용하는 경우 위치 정보 API를 , 다음 코드를 사용하여 단순하게 될 것이다.

navigator.geolocation.getCurrentPosition(function(location) {
  console.log(location.coords.latitude);
  console.log(location.coords.longitude);
  console.log(location.coords.accuracy);
});

Google의 고객 위치 API 를 사용할 수도 있습니다 .

이 문제는 모바일 브라우저의 GPS 위치를 감지 할 수 있습니까? 에서 논의되었습니다 . 모바일 브라우저에서 위치 데이터를 가져옵니다 . 더 많은 정보를 찾을 수 있습니다.


Google 고객 위치 API가 여전히 언급되어 있습니까? 제공된 링크는 Google Loader
Shane N

1
해당 페이지에서 사용 가능한 API 중 하나로 보이지 않습니다. - 당신은 Google 위치 찾기의 API를 사용할 수 있습니다 : code.google.com/apis/latitude - 이것으로는 고객의 현재 위치를 얻을 수 있습니다 : code.google.com/apis/latitude/v1/...
dochoffiday


우리는 코딩을 통해 자동으로 공유 위치를 활성화 할 수 있습니까
Mr. Tomar

2
귀하의 위치 사용을 요청합니까?
Jack

21

좀 더 구체적인 답변을 제공합니다. HTML5를 사용하면 지리적 좌표를 얻을 수 있으며 꽤 괜찮은 일을합니다. 지리적 위치에 대한 브라우저 지원은 ie7 및 ie8 (및 opera mini)을 제외한 모든 주요 브라우저에서 상당히 좋습니다. IE9는 그 일을하지만 최악의 수행자입니다. Checki caniuse.com :

http://caniuse.com/#search=geol

또한 사용자의 위치에 액세스하려면 사용자의 승인이 필요하므로이를 확인하고 꺼져있는 경우 적절한 지침을 제공해야합니다. 특히 아이폰의 경우 Safari에 대한 권한을 설정하는 것은 약간 성가신 일입니다.


dotnetcurry.com/aspnet-mvc/782/...는 asp.net MVC 환경에서 구현을위한 편리한 참조입니다
월터 드 종

13

이것을 사용하면 모든 정보를 http://www.w3schools.com/html/html5_geolocation.asp 에서 찾을 수 있습니다

<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>

1
getCurrentPosition () 및 watchPosition ()은 더 이상 안전하지 않은 원본에서 작동하지 않습니다. 이 기능을 사용하려면 응용 프로그램을 HTTPS와 같은 안전한 출처로 전환하는 것을 고려해야합니다.
user2589273

4

GeoLocation API 가 있지만 현재는 브라우저 지원이 다소 부족합니다 . 그러한 것들에 관심이있는 대부분의 사이트는 GeoIP 데이터베이스를 사용합니다 (일반적으로 그러한 시스템의 부정확성에 대한 규정이 있습니다). FireEagle 과 같은 사용자 협력이 필요한 타사 서비스를 볼 수도 있습니다 .


1
빠른 답변 감사합니다. 가능하다면 더 많은 팁을 제공해 주시겠습니까?
Ganesh

2

주목할 만한

/*
  function geo_success(position) {
    do_something(position.coords.latitude, position.coords.longitude);
  }

  function geo_error() {
    alert("Sorry, no position available.");
  }

  var geo_options = {
    enableHighAccuracy: true,
    maximumAge        : 30000,
    timeout           : 27000
  };

  var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
  */
  getLocation(): Observable<Position> {
    return Observable.create((observer) => {
      const watchID = navigator.geolocation.watchPosition((position: Position) => {
        observer.next(position);
      });
      return () => {
        navigator.geolocation.clearWatch(watchID);
      };
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }

1

최신 지방 화살표 기능을 사용합시다 :

navigator.geolocation.getCurrentPosition((loc) => {
  console.log('The location in lat lon format is: [', loc.coords.latitude, ',', loc.coords.longitude, ']');
})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.