扑扑扑火的地理位置不作为标记

时间:2020-09-27 16:43:41

标签: android google-maps flutter dart google-cloud-firestore

我正在尝试通过检索geopoint在Firestore上的Google地图上显示标记,但是它没有显示标记,而是仅在相机位置显示了一个标记。我的代码如下。我找不到我在哪里弄错了。这些方法不会从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 个答案:

答案 0 :(得分:0)

按以下方式在setState方法中移动initMarker()调用:

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