Как добавить пользовательский маркер на карту Google из FirebaseFirestore в flutter?

# #firebase #flutter #google-maps #google-cloud-firestore #google-maps-markers

Вопрос:

Я пытаюсь показать несколько маркеров из базы данных firestore( только те маркеры, расстояние до которых меньше 2000) . Но, к несчастью, я получаю не желаемый результат.

     @override
  void initState() {
    super.initState();

    _getCurrentLocation();

  }



 _getCurrentLocation() async {

    setCustomMarker();
    await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high)
        .then((Position position) async {

      setState(() {
        _currentPosition = position;
        print('CURRENT POS: $_currentPosition');
        mapController.animateCamera(
          CameraUpdate.newCameraPosition(
            CameraPosition(
              target: LatLng(position.latitude, position.longitude),
              zoom: 18.0,
            ),
          ),
        );
      });
      await _getAddress();
    }).catchError((e) {
      print(e);
    });
  }

  void setCustomMarker() async{
    customIcon=await BitmapDescriptor.fromAssetImage(ImageConfiguration(devicePixelRatio: 2.5), 'Assets/pointer.jpg');

    getVolunteersLocations();
  }
  getVolunteersLocations()async{


    print('get volunteer location called ');
    FirebaseFirestore.instance.collection('Volunteers').get().then((doces) {
      if (doces.docs.isNotEmpty) {

        for (int i = 0; i < doces.docs.length;   i) {

          var distance=Geolocator.distanceBetween(_currentPosition.latitude, _currentPosition.longitude, doces.docs[i].get('lat'),doces.docs[i].get('lng') );

          print('distance $distance');
          if(distance <2000){
            print('get name ${doces.docs[i].get('v_name')}');

            maarkr.add(Marker(
              markerId: MarkerId(doces.docs[i].get('v_name')),
              position: LatLng(doces.docs[i].get('lat'), doces.docs[i].get('lng')),
              infoWindow: InfoWindow(
                title: 'Start ${doces.docs[i].get('v_name')}',
                snippet: _startAddress,
              ),
              icon:customIcon,
            ));



          }

        }
      }
    });
  }
 

Вот карта Google, виджет в Scaffold(методы сборки).Я не понимаю, что именно я делаю неправильно, любая помощь была бы признательна.

 GoogleMap(
              markers: maarkr.toSet(),
              initialCameraPosition: _initialLocation,
              myLocationEnabled: true,
              myLocationButtonEnabled: false,
              mapType: MapType.normal,
              zoomGesturesEnabled: true,
              zoomControlsEnabled: false,
              polylines: Set<Polyline>.of(polylines.values),
              onMapCreated: (GoogleMapController controller) {
                mapController = controller;
              },
            ),
 

Комментарии:

1. Какой результат вы получаете? Вы получаете все маркеры, включая маркеры с расстоянием > 2000, или вообще без маркера?