我有两个应用程序,例如Uber,我使用一个应用程序使用Geoflutterfire在Firestore上保存位置。另外,我正在使用Geoflutterfire插件查询预定义半径为5km内的文档。这些位置已成功保存在Firestore数据库中。我使用的是一台计算机,所以我退出了位置保存应用程序,然后移到了位置查询应用程序。但是,当我查询时,除了模拟器的当前位置之外,我在地图上什么也没有。无法从Firestone查询所有已保存的文档。我将_startQuery放在initState()中,以便它可以在启动时自动查询。可能由于我要查询的其他用户当前未登录而导致查询无法正常工作吗? (不直播) 其次,我正在尝试使用标记,但也没有用。 我只需要两个月的编程时间。请帮忙。
_startQuery() async {
try {
// Get querying phone location
var pos = await geoLocator.getCurrentPosition();
double userLatitude = pos.latitude;
double userLongitude = pos.longitude;
// Make a reference to firestore
var ref = _firestore.collection('docsLocation');
GeoFirePoint center = geoflutterfire.point(
latitude: userLatitude, longitude: userLongitude);
double radius = 5;
String field = 'position';
Stream<List<DocumentSnapshot>> stream = geoflutterfire
.collection(collectionRef: ref)
.within(center: center, radius: radius, field: field);
stream.listen((List<DocumentSnapshot> documentList) {
//获取距离并显示在标签上 双倍距离= center.distance(lat:userLatitude,lng:userLongitude); 返回距离 }); }抓住(e){ 打印(e); } }`
//下面的代码旨在向查询结果添加标记和描述,但没有任何效果,Android flutter并未显示任何错误
void _updateMarkers(List<DocumentSnapshot> documentList) {
print(documentList);
final List<Marker> markers = [];
int id = Random().nextInt(500);
documentList.forEach((DocumentSnapshot document) {
GeoPoint pos = document.data['position']['geopoint'];
double distance = document.data['distance'];
setState(() {
markers.add(
Marker(
position: LatLng(pos.latitude, pos.longitude),
markerId: MarkerId(id.toString()),
icon: BitmapDescriptor.defaultMarker,
infoWindow: InfoWindow(
title: 'Doctor is $distance from you',
onTap: () {
//navigate to Docs profile screen to show all info plus video and chat
},
),
),
);
});
});
}