WebブラウザーからGPS位置を取得する


164

私はモバイルベースのWebサイトを開発しています。そこでGoogleマップを統合しました。Googleマップの「From」フィールドに動的に入力する必要があります。

WebブラウザーからGPSの位置を取得し、Googleマップの「From」フィールドに動的に入力することはできますか?


2
どのモバイルをサポートする予定ですか?
Rowland Shaw

すべてのモバイルブラウザーをサポートしたいが、i-phoneが最優先
Ganesh

ハードウェアとのより緊密な統合が可能になるため、ネイティブアプリを作成した方がよい場合があります
Rowland Shaw

16
ロケーションのみが必要な場合、ネイティブアプリは非常に過剰です。iOSだけがモバイルではなく、優先事項です。
ゴンサーロア・ベイガ

回答:


194

あなたが使用している場合はジオロケーションAPIを、それが次のコードを使用するなど、単純なようになります。

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

また、GoogleのClient Location APIを使用できる場合もあります

この問題については、モバイルブラウザのGPS位置を検出することは可能ですか?で説明されています。モバイルブラウザから位置データ取得します。あなたはそこでより多くの情報を見つけることができます。


言及されているGoogle Client Location APIはまだ残っていますか?提供されたリンクはGoogleローダー
Shane N

1
そのページには、使用可能なAPIの1つとして表示されません。-あなたはGoogleの緯度のAPIを使用することができる場合がありますcode.google.com/apis/latitude -これで、クライアントの現在位置を取得することが可能である:code.google.com/apis/latitude/v1/...
dochoffiday

1
将来の読者のために、精度はメートルで測定されます。
johnnyRose

Hyyは、コーディングを介して自動的に位置情報の共有を有効にできますか
Tomar氏

2
これはあなたの場所の使用を要求しますか?
Jack

21

もう少し具体的な答えを出すため。HTML5を使用すると、地理座標を取得できます。HTML5を使用すると、かなりまともな仕事ができます。全体的に、ジオロケーションのブラウザーサポートはかなり良好です。ie7とie8(およびopera mini)を除くすべての主要ブラウザー。IE9はその仕事をしますが、最悪のパフォーマンスです。チェックアウトcaniuse.com:

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

また、ユーザーの位置情報にアクセスするにはユーザーの承認が必要なので、これを確認し、オフになっている場合に備えて適切な指示を行ってください。特にIphoneの場合、Safariの権限をオンにするのは少し面倒です。


dotnetcurry.com/aspnet-mvc/782/…は、asp.net mvc環境での実装に関する便利なリファレンスです
Walter de Jong

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();
  }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.