Flutter-geolocator: Geolocator.getCurrentPosition()は緯度または経度を返していません。

作成日 2020年11月28日  ·  3コメント  ·  ソース: Baseflow/flutter-geolocator

Geolocator.getCurrentPosition()がエミュレーターで機能していません。 ただし、実際のデバイスで動作しています。

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

class LoadingScreen extends StatefulWidget {
  <strong i="6">@override</strong>
  _LoadingScreenState createState() => _LoadingScreenState();
}

class _LoadingScreenState extends State<LoadingScreen> {
  void getLocation() async {
    Position position = await Geolocator.getCurrentPosition(
      desiredAccuracy: LocationAccuracy.low,
    );

    print(position);
  }

  <strong i="7">@override</strong>
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          onPressed: () {
            getLocation();
          },
          child: Text('Get Location'),
        ),
      ),
    );
  }
}

これはコードであり、print(position)は緯度と経度を印刷していません。

needs more info

最も参考になるコメント

私はAndroidエミュレーターに取り組んでいます。 高精度の位置を取得する必要がないので、粗い位置にアクセスするための許可のみを要求しました。 @mvanbeusekomのコメントを見た後、マニフェストに<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />必要な権限を追加した後、 LocationAccuracy,highを試してみたかったのです。

ただし、その許可を追加した後、低精度と高精度の両方の要求が機能しました。 面白い。

全てのコメント3件

iOSまたはAndroidでテストしていますか?

ところで、シミュレーター/エミュレーターで位置情報の更新を有効にしていることを確認してください。 これは、シミュレーター/エミュレーターの設定で行うことができます。

また、シミュレーター/エミュレーターはLocationAccuracy.lowで常にうまく機能するとは限りません。これを、より高いレベルに移動してみてください。

私はAndroidエミュレーターに取り組んでいます。 高精度の位置を取得する必要がないので、粗い位置にアクセスするための許可のみを要求しました。 @mvanbeusekomのコメントを見た後、マニフェストに<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />必要な権限を追加した後、 LocationAccuracy,highを試してみたかったのです。

ただし、その許可を追加した後、低精度と高精度の両方の要求が機能しました。 面白い。

今のところこの問題を閉じます。 AndroidエミュレーターがCOARSE権限でうまく機能しないことは既知の問題です。 これは、COARSEロケーションがセルラーネットワークに基づいて位置を三角測量しようとするためです。セルラーネットワークはエミュレーターでは使用できません。

このページは役に立ちましたか?
0 / 5 - 0 評価