デバイスの現在の場所を取得する方法【iOS】【Android】

#目次
1. はじめに
2. 実装方法
3. まとめ
4. 参考

#はじめに
この記事ではkony.location APIを使用して、デバイスの位置情報を取得する方法をご紹介します。

#実装方法
####**①画面の作成**
1つの画面を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/f75ba768-36d4-a0a9-2ee0-ab7e894506f4.png)

####**②コーディング**
コーディングを行います。

```frmDemoController.js
define({ 

  getPosition: function () {
    var positionoptions = {
      timeout: 15000
    }; // 15秒
    kony.location.getCurrentPosition(this.successcallback, this.errorcallback, positionoptions);
  },

  // 成功時に呼び出されるコールバック
  successcallback: function (position) {
    var geoPosition = "緯度: " + position.coords.latitude;
    geoPosition = geoPosition + " 経度: " + position.coords.longitude;
    geoPosition = geoPosition + " 高度: " + position.coords.altitude;
    geoPosition = geoPosition + " 精度: " + position.coords.accuracy;
    geoPosition = geoPosition + " 高度精度: " + position.coords.altitudeAccuracy;
    geoPosition = geoPosition + " 見出し: " + position.coords.heading;
    geoPosition = geoPosition + " スピード: " + position.coords.speeding;
    geoPosition = geoPosition + " タイムスタンプ: " + position.timestamp;
    alert(geoPosition);
  },

  // エラー時に呼び出されるコールバック
  errorcallback: function (positionerror) {
    var errorMesg = "Error code: " + positionerror.code;
    errorMesg = errorMesg + " message: " + positionerror.message;
    alert(errorMesg);
  }

});
```

上を説明します。
**kony.location.getCurrentPosition（successcallback、errorcallback、positionoptions）**：デバイスの現在の場所を取得できる。

**successcallback** - 必須

| キー | 説明 |
| ----- | ----- |
| latitude [Number] | 緯度 |
| longitude [Number] | 経度 | 
| altitude [Number] | 位置の高さをメートルで表示したもの | 
| accuracy [Number] | 緯度と経度の座標の精度レベル |
| altitudeaccuracy [Number] | 高度座標の精度レベル（単位：メートル）|
| heading [Number]|進行方向（北を基準にして時計回りに数えた度） |
| speeding [Number]|デバイスの現在の対地速度をメートル毎秒で指定|
| timestamp [Number]|Position objectが取得された時間 |

####**③アクションの紐付け**
関数の準備ができたらActionと紐づけていきます。

`btnGetLocation`（「Get Location」ボタン）を選択 > `Action`タブをクリック > `onClick`のEditをクリック > Action(`getPosition`)紐づけ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/1a3810e9-e26d-7c42-5b43-761588a17e2c.png)

####**④Androidでの権限設定**
位置情報を取得するためのアクセス許可を要求できるように設定します。

`Project Settings` > `Native` > `Android` > `Manifest Properties & Build Entries` 

以下の2つを追加（Add）し、`Finish`をクリック
・**ACCESS_COARSE_LOCATION**
・**ACCESS_FINE_LOCATION**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9f50bd96-36b9-4d13-9b4e-442f5a8e992a.png)

####**⑤iOSでの権限設定**
iOSも設定していきます。
左側のメニューから`Assets` > `Media` > `Common` > `infoplist_configuration.json`の下矢印をクリック > `Resourse Location`を選択し、ファイルを開く  
※今回はVisual Studio Codeで開いています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/449b60da-90c7-f8e2-7a5f-5bdcee26282f.png)

1番下の行に以下を追加
`" NSLocationUsageDescription ": "Access Location"`
![スクリーンショット 2021-03-25 13.50.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/f7314fdf-b163-7c7f-2c72-24a3733389c0.png)



####**⑥実装の確認**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e2ee0dd4-4bc0-3616-6114-568ce7dd619b.png)
このように位置情報を取得できます。

#まとめ
今回は、デバイスの現在の場所を取得する方法について説明しました。
みなさんもぜひ活用してみてくださいね:wave:

#参考
kony.location Namespace：
https://docs.kony.com/konylibrary/visualizer/viz_api_dev_guide/content/kony.location_functions.htm

Runtime Permission API：
https://docs.kony.com/konylibrary/visualizer/viz_api_dev_guide/content/runtime_permissions.htm

Map Widgetを使って撮影場所を表示する:
https://qiita.com/Kony_Team/items/5b2fc9384801e0ae70c7