【发布时间】:2019-05-31 01:39:54
【问题描述】:
我正在尝试使用geofirestore 查询距用户位置最近的文档,我的代码仅获取 1 个文档,正如您在代码中看到的那样,我将半径设置为 100 公里,并将文档的位置设置为同一地点。
我尝试在地图中打印 snapshot 结果,但它只打印 1 个文档
这里我发送文档 id 以将 query 构建成 recyclerView
Map<String,Object> stringIntegerMap=new HashMap<>();
private void getNearestEstate(){
GeoQuery geoQuery = geoFirestore.queryAtLocation(new GeoPoint(latitude, longitude), 100);
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
@Override
public void onDocumentEntered(DocumentSnapshot documentSnapshot, GeoPoint geoPoint) {
stringIntegerMap=documentSnapshot.getData();
Query query=propertyRef.whereEqualTo("mID",Integer.parseInt(documentSnapshot.getId()));
dataFetch(query,R.id.discoverRV);
//here how i tried to print the result to see how many documents i got
for (Map.Entry<String,Object> entry : stringIntegerMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
Toast.makeText(mContext,key+" "+value,Toast.LENGTH_LONG).show();
}
}
我在这里构建查询并将其发送到recyclerview adapter
private void dataFetch(Query query,int rvView){
FirestoreRecyclerOptions<Property> options = new FirestoreRecyclerOptions.Builder<Property>()
.setQuery(query, Property.class)
.build();
mAdapter = new DiscoverAdapter(options);
RecyclerView recyclerView = root.findViewById(rvView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false));
recyclerView.setAdapter(mAdapter);
mAdapter.startListening();
}
【问题讨论】:
-
你尝试重启路由器了吗?
-
您确定您在 100 公里半径内有超过 1 个位置吗?
-
每个文档中的经纬度是我当前的位置
标签: java android google-cloud-firestore geofirestore