# #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, или вообще без маркера?