如何解决如何在 Flutter 中从 FirebaseFirestore 在 GoogleMap 上添加自定义标记?
我正在尝试从 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,));
}
}
}
});
}
这是谷歌地图,脚手架中的小部件(构建方法)。我不明白我在做什么,任何帮助将不胜感激。
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;
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。