【Flutter】現在地を取得する

【Flutter】現在地を取得する

本記事はflutterでGPSを使い現在地の緯度、経度を取得する方法を記載します。

大きな流れ

  1. ライブラリを取得する
  2. permissionを設定する
  3. 現在地を取得するコードを記載する

という流れになります。

1. ライブラリ取得

flutterで使えるライブラリは、pub.devというサイトにまとまっています。

今回はここに存在するgeolocatorというライブラリを使用します。

ライブラリを使用するためには、flutterのpubspec.ymlのdependenciesに使うライブラリを以下のように記載します。geolocator:の後に記載の数字はライブラリのバージョンになります。(2021年7月9日時点の最新です)

dependencies:
  geolocator: ^7.2.0+1

そして、設定後、実際にライブラリを取得するためにAndroid Studioをお使いの方は、右上の「Pub get」をクリックしてください。

ライブラリを取得後、使用するDartファイル内で以下のようにライブラリをimportしてください。

import 'package:geolocator/geolocator.dart';

2. permissionの設定

位置情報を取得するには、ユーザに取得して良いかの確認を取るように設定する必要があります。

2-1. Androidの場合

androidの場合は、flutterプロジェクトのandroidフォルダ→appフォルダ→srcフォルダ→mainフォルダ内のAndroidManifest.xmlを修正します。

manifestタグのすぐ下に下記を追加してください

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

2-2. iPhoneの場合

iPhoneの場合は、flutterプロジェクトのiosフォルダ→Runnerフォルダ内のinfo.plistを修正します。

dictタグのすぐ下に下記を追加してください

<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>

3. 現在地を取得するコード

現在地を取得するコードは以下です。

void getLocation() async {
    try {
      Position position = await Geolocator.getCurrentPosition(
          desiredAccuracy: LocationAccuracy.low);
    } catch (e) {
      print(e);
    }
  }

LocationAccuracy.lowという設定は、どのくらいの精度で位置情報を取得するかを設定しています。

この設定は、現状以下のような形の精度となっているようです。目的に合わせて設定を変更してみてください

4. その他

その他、補足情報として、動作検証をしている環境が端末でなくシミュレータの場合、位置情報はどうやって取られるのかについて記載しておきます。

シミュレータを使用している場合は、予め設定されている位置情報が取得できます。

設定されている位置情報は、メニューのFuturesのLocationを選択していただくとわかるかと思います。この設定の情報が取得される形になります。

以上になります。試してみてください。




Flutterカテゴリの最新記事