颤动的firestore地理点未显示为标记

Posted

技术标签:

【中文标题】颤动的firestore地理点未显示为标记【英文标题】:flutter firestore geopoint are not shoing as markers 【发布时间】:2021-01-13 08:55:10 【问题描述】:

我正在尝试通过检索 geopoint 在 Firestore 中的谷歌地图上显示标记,但它没有显示标记,而仅在相机位置显示一个。我的代码如下。我找不到我在哪里犯了错误。这些方法不会从 Firestore 中检索任何值。

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:cloud_firestore/cloud_firestore.dart';


 class heatmap extends StatefulWidget 
   @override

   _heatmapState createState() => _heatmapState();
 

 class _heatmapState extends State<heatmap> 

var clients=[];
GoogleMapController mapController;
List<Marker> allMarkers=[];
FirebaseFirestore firestore = FirebaseFirestore.instance;


 Future<void> initState()  

setState(() 
  clients=[];

  FirebaseFirestore.instance.collection('markers').get().then((docs)  


    if(docs.docs.isNotEmpty)
      for(int i=0;i<docs.docs.length;i++)
        initMarker(docs.docs[i].data());
      
    



  );

);


 


 initMarker(clients)

   allMarkers.add( Marker(

       markerId: MarkerId('my'),
     position: LatLng(clients['coords'].latitude,clients['coords'].longitude),
   )
   );


 

   @override
   Widget build(BuildContext context) 
     return new Scaffold(
       appBar: new AppBar(title: new Text('Red Flag areas',
           style: TextStyle(
             color: Colors.white,
             letterSpacing: 2.0,
             fontSize: 28.0,
           )),
         centerTitle: true,
         backgroundColor: Colors.amberAccent,


       ),
       body: GoogleMap(

         onMapCreated: onMapCreated,
                   initialCameraPosition: CameraPosition(
                     target: LatLng(23.8103, 90.4125),
                     zoom: 11.0
                   ),
                   myLocationEnabled: true,


                   markers: Set.from(allMarkers),


                 )

           );


   
   void onMapCreated(controller)
    setState(() 

      mapController=controller;
    );
   
 

here is the data base

【问题讨论】:

【参考方案1】:

移动setState调用initMarker()方法如下:

initMarker(clients) 
    setState(() =>  allMarkers.add(Marker(...)) );

【讨论】:

以上是关于颤动的firestore地理点未显示为标记的主要内容,如果未能解决你的问题,请参考以下文章

如何在listview颤动中显示来自firestore的图像数组?

如何在颤动中显示来自firestore的特定文档详细信息

如何在firestore中显示地图列表并在颤动中显示它们

如何从 firestore 检查有多少项目具有真值或假值并在列表中仅显示真值? - 颤动

Flutter 的 onTap 方法打开存储在 Firestore 中的经纬度

使用在 Firestore 中插入的 GeoPoint 在 Google 地图中移动标记