如何从lat和lon

时间:2018-06-17 17:00:03

标签: google-maps dart flutter flutter-dependencies

我在颤动中使用地理定位插件提取了经度和纬度。但现在我需要从那些经度和纬度创建地名。

我尝试使用地理编码器插件,但

  final coordinates = new Coordinates(latitude, longitude);
          var addresses =  Geocoder.local.findAddressesFromCoordinates(coordinates);

      var first = addresses.first; 

上面的行给出的错误是,没有为类Future<>

定义getter first
      print("${first.featureName} : ${first.addressLine}");

如何使用那些纬度和经度并在颤动中转换为地址?

3 个答案:

答案 0 :(得分:2)

在这种情况下,

findAddressesFromCoordinates会返回Future

您可以制作自己的功能或方法async

void yourFunction() async {
  final coordinates = new Coordinates(latitude, longitude);
  var addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates);

  var first = addresses.first; 
  print("${first.featureName} : ${first.addressLine}");
}

在这种情况下,您需要在方法调用前使用await关键字,这将使该函数仅在> 对象后继续运行地址已被检索。

另一个选项是在then上使用Future方法,如下所示:

void yourFunction() {
  final coordinates = new Coordinates(latitude, longitude);
  Geocoder.local.findAddressesFromCoordinates(coordinates).then((addresses) {
    var first = addresses.first; 
    print("${first.featureName} : ${first.addressLine}");
  });
}

在这种情况下,您将回调传递给then方法,一旦返回它们将在其中执行findAddressesFromCoordinates的结果,但yourFunction本身将继续运行

答案 1 :(得分:1)

改为在本地尝试该Google

final coordinates = new Coordinates(position.latitude, position.longitude);  
geocoder.google('GOOGLE_API_KEY').findAddressesFromCoordinates(coordinates)

答案 2 :(得分:0)

findAddressesFromCoordinates 方法返回Future<List<Address>>

所以你可以做一些事情,比如使用然后

final coordinates = new Coordinates(latitude, longitude);
var addresses =  
Geocoder.local.findAddressesFromCoordinates(coordinates).then(
(data) => print(data);
);

或者你可以使用async / await:

getAddressesFromCoordinates() async {
final coordinates = new Coordinates(1.10, 45.50);
addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates);
first = addresses.first;
print("${first.featureName} : ${first.addressLine}");}

如果你想了解飞镖中异步编程的基础知识,你应该看看这个article