如何从纬度和经度中提取位置名称

Posted

技术标签:

【中文标题】如何从纬度和经度中提取位置名称【英文标题】:How to extract location name from lat and lon 【发布时间】:2018-11-26 15:58:10 【问题描述】:

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

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

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

      var first = addresses.first; 

上面的行给出错误,说没有为类 Future 定义 getter first

      print("$first.featureName : $first.addressLine");

如何使用这些经纬度并在颤振中转换为地址?

【问题讨论】:

【参考方案1】:

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 关键字,这将使函数仅在之后您的对象使用地址继续运行已取回。

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

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 本身将继续运行。

【讨论】:

【参考方案2】:

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

所以你可以使用 then

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

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

【讨论】:

【参考方案3】:

在本地试试这个谷歌

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

【讨论】:

以上是关于如何从纬度和经度中提取位置名称的主要内容,如果未能解决你的问题,请参考以下文章

如何使用纬度和经度获取位置名称或城市?

如何使用纬度和经度在Android中获取位置名称[重复]

给定纬度和经度,在 Sencha Touch 中获取位置名称

如何确定我当前的位置(经度、纬度和高度)?

如何从纬度/经度获取附近的位置?

如何根据用户位置查询 mySQL [关闭]