Geolocatorとは
Geolocatorは、Flutterアプリケーションで位置情報サービスを利用するためのプラグインです。このプラグインを使用することで、iOSやAndroidのネイティブな位置情報サービス(FusedLocationProviderClientやCLLocationManagerなど)に簡単にアクセスすることができます。
- デバイスの現在位置を取得
- 最後に知られている位置を取得
- 位置情報の連続更新
- デバイスの位置情報サービスが有効かどうかの確認
- 2つの地理座標間の距離の計算
- 2つの地理座標間の方位の計算
geolocator | Flutter package
Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.)...
使い方
インストール
pubspec.yaml
ファイルに以下の依存関係を追加します:
dependencies:
geolocator: ^12.0.0
現在位置の取得
デバイスの現在位置を取得するためのサンプルコードは以下の通りです:
Future<Position> _determinePosition() async {
bool serviceEnabled;
LocationPermission permission;
// 位置情報サービスが有効かどうかを確認
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
return Future.error('位置情報サービスが無効です。');
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
return Future.error('位置情報の許可が拒否されました。');
}
}
if (permission == LocationPermission.deniedForever) {
return Future.error('位置情報の許可が永久に拒否されました。');
}
return await Geolocator.getCurrentPosition();
}
最後に知られている位置の取得
Position? position = await Geolocator.getLastKnownPosition();
位置情報の連続更新
final LocationSettings locationSettings = LocationSettings(
accuracy: LocationAccuracy.high,
distanceFilter: 100,
);
StreamSubscription<Position> positionStream = Geolocator.getPositionStream(locationSettings: locationSettings).listen(
(Position? position) {
print(position == null ? 'Unknown' : '${position.latitude}, ${position.longitude}');
}
);
許可の確認とリクエスト
現在の位置情報許可の状態を確認する:
LocationPermission permission = await Geolocator.checkPermission();
位置情報の許可をリクエストする:
LocationPermission permission = await Geolocator.requestPermission();
設定の開く
アプリ設定を開く:
await Geolocator.openAppSettings();
位置情報設定を開く:
await Geolocator.openLocationSettings();
距離の計算
2つの地理座標間の距離を計算する:
double distanceInMeters = Geolocator.distanceBetween(52.2165157, 6.9437819, 52.3546274, 4.8285838);
方位の計算
2つの地理座標間の方位を計算する:
double bearing = Geolocator.bearingBetween(52.2165157, 6.9437819, 52.3546274, 4.8285838);