如何在颤振中获得经度和纬度

时间:2020-03-24 19:04:55

标签: flutter dart

我可以弄清楚如何将用户的纬度和经度放在一起,但是需要单独获取它们才能利用Geolocator包中的Geolocator()。distanceBetween函数。我下面的代码不断出现错误:

未处理的异常:NoSuchMethodError:在空值上调用了获取方法“纬度”。

收件人:空

尝试致电:纬度

  Future<Position> getLocation() async {
    var currentLocation;
    try {
      currentLocation = await geolocator.getCurrentPosition(
          desiredAccuracy: LocationAccuracy.best);
    } catch (e) {
      currentLocation = null;
    }
    return currentLocation;
  }


  void calculateDistance() async {

    getLocation().then((position) {
       userLocation = position;
    });

      final double myPositionLat =  userLocation.latitude;
      final double myPositionLong = userLocation.longitude;

      final double TPLat = 51.5148731;
      final double TPLong = -0.1923663;
      final distanceInMetres = await Geolocator().distanceBetween(myPositionLat, myPositionLong, TPLat, TPLong)/1000;

      print(distanceInMetres);

  }

1 个答案:

答案 0 :(得分:1)

尝试一下:

void calculateDistance() async {

getLocation().then((position) {
   userLocation = position;


  final double myPositionLat =  userLocation.latitude;
  final double myPositionLong = userLocation.longitude;

  final double TPLat = 51.5148731;
  final double TPLong = -0.1923663;
  final distanceInMetres = await Geolocator().distanceBetween(myPositionLat, myPositionLong, TPLat, TPLong)/1000;

  print(distanceInMetres);

  });
}

或另一种方式是:

void calculateDistance() async {

userLocation = await getLocation();


  final double myPositionLat =  userLocation.latitude;
  final double myPositionLong = userLocation.longitude;

  final double TPLat = 51.5148731;
  final double TPLong = -0.1923663;
  final distanceInMetres = await Geolocator().distanceBetween(myPositionLat, myPositionLong, TPLat, TPLong)/1000;

  print(distanceInMetres);
}