флаттер и firebase: фильтрация маркеров для карт

#flutter #maps #marker

Вопрос:

У меня есть список мест в firestore:

введите описание изображения здесь

когда я загружаю их с помощью streambuilder для заполнения карты, я хотел бы отфильтровать маркеры на основе их расстояния от текущего местоположения.

на данный момент я делаю это таким образом, используя видимый тег на маркере (здесь в качестве примера я отфильтровал только маркеры с расстоянием менее 150 м):

 StreamBuilder<QuerySnapshot>(
  stream: FirebaseFirestore.instance.collection('segnalazioni').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }

    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    }

    return Container(
      height: MediaQuery.of(context).size.height,
      width: MediaQuery.of(context).size.width,
      child: Stack(
        children: [
          GoogleMap(
            myLocationButtonEnabled: false, //true,
            initialCameraPosition:
                CameraPosition(target: _initialcameraposition),
            mapType: MapType.normal,
            onMapCreated: _onMapCreated,
            myLocationEnabled: true,
            markers: snapshot.data!.docs.map(
              (document) {
                int distance = Geolocator.distanceBetween(
                  _currentPosition.latitude!,
                  _currentPosition.longitude!,
                  document['posizione'].latitude,
                  document['posizione'].longitude,
                ).round();

                return Marker(
                  markerId: MarkerId(document.id),
                  position: LatLng(
                    double.parse('${document['posizione'].latitude}'),
                    double.parse('${document['posizione'].longitude}'),
                  ),
                  visible: distance < 150 ? true : false,
                );
              },
            ).toSet(), 
 

Я чувствую, что это не самое разумное решение, потому что я загружаю маркеры, даже если они не соответствуют критериям, просто я их не показываю.

Как я могу отфильтровать их на более высоком уровне? могу ли я отфильтровать их внутри функции .map?

Второй вопрос: правильно ли использовать streambuilder для заполнения карты маркерами?