首页 > 解决方案 > 我如何获得标记的纬度和长度然后存储在火库中 - 颤动

问题描述

我想在此代码中获取标记的纬度和经度,以便将此位置存储在 firebase

body: GoogleMap(
       zoomControlsEnabled: false,
       initialCameraPosition: CameraPosition(target: latLng ,zoom: 14.34),
       markers: markers,
    //  onTap: _handleTap,
       onMapCreated: (GoogleMapController controller) {
           _controller.complete(controller);
         },
       onCameraMove: (point){
         setState(() {
           markers.add(Marker(markerId: markerId,position: point.target)
           );
         });
         
       },
     ),

在获得标记的新位置的经纬度后,我想在火库中存储新位置

这是我的代码

Completer<GoogleMapController> _controller = Completer();
 final markers = Set<Marker>();
 MarkerId markerId = MarkerId('parking');
 LatLng latLng = LatLng(32.5259483,35.8506622);

TextButton(onPressed: (){
                   FirebaseFirestore.instance.collection('parking_go_loc').add({
                         'name':'${name}',
                         'email':'${email}',
       'location' : GeoPoint(latLng.latitude,latLng.longitude),
       
                        });
                        Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> LoginWoner()));
                 }

我的包裹

google_maps_flutter: 
 cloud_firestore: ^2.4.0
 location: ^4.2.0
 firebase_core :

但是当我运行这段代码时,它会存储我在代码中输入的第一个坐标它在移动标记并按下保存按钮后不会存储标记的新坐标

标签: firebasefluttergoogle-mapsgoogle-cloud-firestoremarker

解决方案


您只需要将变量更新为回调latLng中的新LatLng值。onCameraMove

添加此行latLng = point.target,您onCameraMove将是:

onCameraMove: (point){
  setState(() {
    markers.add(Marker(markerId: markerId,position: point.target)
    latLng = point.target;
  );
);

推荐阅读