首页 > 解决方案 > Flutter:如何从谷歌地图中获取地名

问题描述

我在颤振中创建了一个运行良好的谷歌地图,我想获得地点的名称,请帮我获得这个,有没有办法使用纬度和经度来做到这一点?这是我的代码




class _locationState extends State<location> {
  Completer<GoogleMapController> _controllerGoogleMap=Completer();
  late GoogleMapController newGoogleMapController;
  double mapbottompadding=0;

  GlobalKey<ScaffoldState> scaffoldkey=new GlobalKey<ScaffoldState>();
   late Position currentpositon;
  var geolocator=Geolocator();

  void locatepostion() async{
    Position position=await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    currentpositon=position;

    LatLng latLngPosition=LatLng(position.latitude,position.longitude);

    CameraPosition cameraPosition=new CameraPosition(target: latLngPosition,zoom: 14);
    newGoogleMapController.animateCamera(CameraUpdate.newCameraPosition(cameraPosition));
  }

  static final CameraPosition googlepostion=CameraPosition(target: LatLng(37.4249,-122.0657));
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(children: [
        Container(
        child:GoogleMap(
          padding: EdgeInsets.only(bottom: mapbottompadding),
          mapType: MapType.normal,
          myLocationButtonEnabled: true,
          myLocationEnabled: true,
          zoomControlsEnabled: true,
          zoomGesturesEnabled: true,
           initialCameraPosition: googlepostion,
           onMapCreated: (GoogleMapController controller){
              _controllerGoogleMap.complete(controller);
              newGoogleMapController=controller;
              setState(() {
                mapbottompadding=300.0;
              });
              
              locatepostion();
          },
        )
      )],),
      
    );
  }
}

您的帮助将不胜感激!

标签: fluttergoogle-maps

解决方案


使用地理编码包获取当前的纬度和经度。然后将纬度和经度传递给这个 {placemarkFromCoordinates} 函数。

它将提供使用包含许多信息的 Placemark 对象列表。例如名称,子地区,地区,邮政编码等。

List<Placemark> placemarks =
          await placemarkFromCoordinates(position.latitude, position.longitude);

Placemark place1 = placemarks[0];
Placemark place2 = placemarks[1];
String _currentAddress =
            "${place1.name} ${place2.name} ${place1.subLocality} 
${place1.subAdministrativeArea} ${place1.postalCode}";

推荐阅读