本記事はflutterでGPSを使い現在地の緯度、経度を取得する方法を記載します。
大きな流れ
- ライブラリを取得する
- permissionを設定する
- 現在地を取得するコードを記載する
という流れになります。
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を選択していただくとわかるかと思います。この設定の情報が取得される形になります。
以上になります。試してみてください。
コメントを書く