【Flutter】Geolocatorについて

Flutter

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);

Buy me a coffee!

Flutterアプリ開発
シェアする
sogaをフォローする
タイトルとURLをコピーしました