如何从纬度和经度中提取位置名称
How to extract location name from lat and lon
我在 flutter 中使用地理定位插件提取了经度和纬度。但是现在我需要根据这些经度和纬度创建地名。
我尝试使用地理编码器插件,但是
final coordinates = new Coordinates(latitude, longitude);
var addresses = Geocoder.local.findAddressesFromCoordinates(coordinates);
var first = addresses.first;
上面一行给出了错误,说 getter first is not defined for class Future<>
print("${first.featureName} : ${first.addressLine}");
如何使用这些经纬度并在 flutter 中转换为地址?
findAddressesFromCoordinates 方法 return 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
findAddressesFromCoordinates
returns a 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
关键字,这将使函数仅在 运行 after 您的已检索到地址 的对象 。
另一个选项是在 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
本身将继续 运行.
在本地
试试这个google
final coordinates = new Coordinates(position.latitude, position.longitude);
geocoder.google('GOOGLE_API_KEY').findAddressesFromCoordinates(coordinates)
我在 flutter 中使用地理定位插件提取了经度和纬度。但是现在我需要根据这些经度和纬度创建地名。
我尝试使用地理编码器插件,但是
final coordinates = new Coordinates(latitude, longitude);
var addresses = Geocoder.local.findAddressesFromCoordinates(coordinates);
var first = addresses.first;
上面一行给出了错误,说 getter first is not defined for class Future<>
print("${first.featureName} : ${first.addressLine}");
如何使用这些经纬度并在 flutter 中转换为地址?
findAddressesFromCoordinates 方法 return 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
findAddressesFromCoordinates
returns a 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
关键字,这将使函数仅在 运行 after 您的已检索到地址 的对象 。
另一个选项是在 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
本身将继续 运行.
在本地
试试这个googlefinal coordinates = new Coordinates(position.latitude, position.longitude);
geocoder.google('GOOGLE_API_KEY').findAddressesFromCoordinates(coordinates)