クラウド導入・監視運用からシステム開発まで、WestWindに全ておまかせください

ブログ

ホーム > ブログ

2017年10月23日

ionic2で位置情報の取得を行う

執筆者:椿宏太郎

ionicで、現在位置を取得するには、「cordova-plugin-geolocation」を利用することで可能です。プロジェクトにpluginをインストールして利用します。

プロジェクトへのインストール

プロジェクトへのインストールは、下記のコマンドを実行します。
ionic cordova plugin add cordova-plugin-geolocation

コードの実装

実装するには、下記のメソッドが利用可能です。
navigator.geolocation.getCurrentPosition(geolocationSuccess, [geolocationError], [geolocationOptions]); var watchId = navigator.geolocation.watchPosition(geolocationSuccess, [geolocationError], [geolocationOptions]); navigator.geolocation.clearWatch(watchID);


navigator.geolocation.getCurrentPosition

PositionオブジェクトをパラメータとしてgeolocationSuccessコールバックに、デバイスの現在位置を返します。 エラーがある場合、geolocationErrorコールバックにPositionErrorオブジェクトが渡されます。

パラメータ
geolocationSuccess:現在の位置に渡されるコールバック。
geolocationError:エラーが発生した場合に実行されるコールバック。※オプション
geolocationOptions:ジオロケーションオプション。※オプション


navigator.geolocation.watchPosition

位置の変化が検出されたときのデバイスの現在の位置を返します。 デバイスが新しい場所を取得すると、geolocationSuccessコールバックはPositionオブジェクトをパラメータとして実行されます。 エラーがある場合、geolocationErrorコールバックはPositionErrorオブジェクトをパラメータとして実行されます。

パラメータ
geolocationSuccess:現在の位置に渡されるコールバック。
geolocationError:エラーが発生した場合に実行されるコールバック。※オプション
geolocationOptions:ジオロケーションオプション。※オプション
戻り値
String:監視位置の間隔を参照する監視IDを返します。 ウォッチIDはnavigator.geolocation.clearWatchと一緒に使用して、位置の変更の監視を停止する必要があります。


geolocationOptions

ジオロケーションの位置の取得をカスタマイズするためのオプションのパラメータ。

{enableHighAccuracy:true, timeout:5000, maximumAge:3000 };

enableHighAccuracy:
アプリケーションに可能な限り最良の結果が必要であるというヒントを提供します。デフォルトでは、デバイスはネットワークベースの方法を使用してPositionを取得しようとします。このプロパティをtrueに設定すると、フレームワークは衛星測位などのより正確なメソッドを使用するようになります。 (Boolean)
timeout:
navigator.geolocation.getCurrentPositionまたはgeolocation.watchPositionへの呼び出しから、対応するgeolocationSuccessコールバックが実行されるまでの最大時間(ミリ秒)。この時間内にgeolocationSuccessコールバックが呼び出されない場合、geolocationErrorコールバックにPositionError.TIMEOUTエラーコードが渡されます。 geolocation.watchPositionと組み合わせて使用​​すると、geolocationErrorコールバックがミリ秒ごとに間隔で呼び出されることに注意してください!)(数値)
maximumAge:
指定した時間(ミリ秒単位)を超えないキャッシュされた位置を受け入れます。 (数値)


navigator.geolocation.clearWatch

watchIDパラメータで参照されるデバイスの場所の変更を監視しないようにします。

パラメーター
watchID:消去するwatchPositionインターバルのID。 (String)


Position

Positionオブジェクトは、ジオロケーションAPIによって作成された位置座標とタイムスタンプが含まれます。

プロパティ
coords:地理座標の集合。 (座標)
timestamp:座標の作成タイムスタンプ。 (DOMTimeStamp)


coords(座標)

coodsオブジェクトは、現在の位置の要求でコールバック関数で使用できるPositionオブジェクトに関連付けられています。 これは、位置の地理的座標を記述する一連のプロパティを含みます。
プロパティ
latitude:10進数の緯度。 (数値)
longitude:10進数の経度。 (数値)
altitude:楕円の上のメートルの位置の高さ。 (数値)
accuracy:メートル単位の緯度と経度座標の精度レベル。 (数値)
altitudeAccuracy:高度座標の精度レベル(メートル単位)。 (数値)
heading:真の北に相対して時計回りに数えて指定された移動の方向。 (数値)
speed:デバイスの現在の地上速度。メートル/秒で指定します。 (数値)


サンプルソース


ionViewDidLoad() {
   this.loadMap();
   navigator.geolocation.getCurrentPosition(this.onSuccess, this.onError);
 }
 ionViewDidLeave(){
    this.map.remove();
 }
 onSuccess(position) {
    alert('Latitude: '           + position.coords.latitude         + '\n' +
          'Longitude: '          + position.coords.longitude        + '\n' +
          'Altitude: '           + position.coords.altitude         + '\n' +
          'Accuracy: '           + position.coords.accuracy         + '\n' +
          'Altitude Accuracy: '  + position.coords.altitudeAccuracy + '\n' +
          'Heading: '            + position.coords.heading          + '\n' +
          'Speed: '              + position.coords.speed            + '\n' +
          'Timestamp: '          + position.timestamp               + '\n');
 };
 // onError Callback receives a PositionError object
 //
 onError(error) {
      alert('code: '    + error.code    + '\n' +
            'message: ' + error.message + '\n');
 }

カテゴリ