我如何获得标记的纬度和长度然后存储在火库中 - 颤动

Posted

技术标签:

【中文标题】我如何获得标记的纬度和长度然后存储在火库中 - 颤动【英文标题】:How I can get lat and long of marker then store in firestore - flutter 【发布时间】:2021-10-06 14:52:56 【问题描述】:

我想在此代码中获取标记的纬度和经度,以便将此位置存储在 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)
           );
         );
         
       ,
     ),

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

这是我的代码

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 :

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于我如何获得标记的纬度和长度然后存储在火库中 - 颤动的主要内容,如果未能解决你的问题,请参考以下文章

如何通过地图API获得任意两个地点的距离

如何在 JPG 地图上叠加经度和纬度标记?

用户无权访问此对象。带储藏火库

如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]

如何计算地图中不同标记的距离,然后选择至少一个

如何获得全长 GPS 坐标?