如何将 LatLng 转换为地址 Flutter(iOS 和 Android 版本)
How to convert LatLng to address Flutter (both iOS and Android version)
我正在使用 Flutter 创建一个应用程序,它使用 geocoding plugin 将 LatLng 位置转换为地址。
这是我的代码:
import 'package:geocoding/geocoding.dart';
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
late String location = "location name";
Future<String> getAddress() async {
List<Placemark> placemarks = await placemarkFromCoordinates(
45.478981,9.207120,
localeIdentifier: 'it_It');
return placemarks[0].name.toString();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Convert LatLng to Address")),
body: Center(
child: Stack(children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(location),
ElevatedButton(
onPressed: () {
getAddress().then((value) => {
setState(() {
location = value;
}),
print(value)
});
},
child: const Text('Convert LatLng'),
),
],
),
]),
));
}
}
iOS和Android版本的转换结果不同,例如:
LatLng = 45.478981,9.207120
iOS 版本结果: "Via Alessandro Tadino 21"
Android 版本结果: "46"
我不明白为什么不一样,我应该使用另一个插件吗?
也许该插件对 iOS 和 Android 使用了两种不同的技术。 Android 是否使用某种 Google 地图插件?
你需要的是反向地理编码
Reverse geocoding is the process of converting geographic coordinates into a human-readable address.
由于您需要在 android 和 iOS 设备上使用完全相同的输出,我建议您使用 Google Geocoding API
然后您可以将 API 键与 google_geocoding 包一起使用,并使用坐标
获取位置
var googleGeocoding = GoogleGeocoding("API-KEY");
var result = await googleGeocoding.geocoding.getReverse(LatLon(40.714224,-73.961452));
我正在使用 Flutter 创建一个应用程序,它使用 geocoding plugin 将 LatLng 位置转换为地址。
这是我的代码:
import 'package:geocoding/geocoding.dart';
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
late String location = "location name";
Future<String> getAddress() async {
List<Placemark> placemarks = await placemarkFromCoordinates(
45.478981,9.207120,
localeIdentifier: 'it_It');
return placemarks[0].name.toString();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Convert LatLng to Address")),
body: Center(
child: Stack(children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(location),
ElevatedButton(
onPressed: () {
getAddress().then((value) => {
setState(() {
location = value;
}),
print(value)
});
},
child: const Text('Convert LatLng'),
),
],
),
]),
));
}
}
iOS和Android版本的转换结果不同,例如:
LatLng = 45.478981,9.207120
iOS 版本结果: "Via Alessandro Tadino 21"
Android 版本结果: "46"
我不明白为什么不一样,我应该使用另一个插件吗? 也许该插件对 iOS 和 Android 使用了两种不同的技术。 Android 是否使用某种 Google 地图插件?
你需要的是反向地理编码
Reverse geocoding is the process of converting geographic coordinates into a human-readable address.
由于您需要在 android 和 iOS 设备上使用完全相同的输出,我建议您使用 Google Geocoding API
然后您可以将 API 键与 google_geocoding 包一起使用,并使用坐标
获取位置var googleGeocoding = GoogleGeocoding("API-KEY");
var result = await googleGeocoding.geocoding.getReverse(LatLon(40.714224,-73.961452));