我在颤动中使用地理定位插件提取了经度和纬度。但现在我需要从那些经度和纬度创建地名。
我尝试使用地理编码器插件,但
final coordinates = new Coordinates(latitude, longitude);
var addresses = Geocoder.local.findAddressesFromCoordinates(coordinates);
var first = addresses.first;
上面的行给出的错误是,没有为类Future<>
定义getter first print("${first.featureName} : ${first.addressLine}");
如何使用那些纬度和经度并在颤动中转换为地址?
答案 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