GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户

Posted

技术标签:

【中文标题】GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户【英文标题】:GeoFire Android : GeoQuery is only showing the nearest , not all nearby users 【发布时间】:2019-01-04 17:25:08 【问题描述】:

我正在制作一个应用程序,用户可以在其中找到该应用程序的所有附近用户。所有用户的位置数据都是这样存储的:

如果我使用该代码代码:



    ...
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
    GeoFire geoFire = new GeoFire(ref);
    GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(Double.parseDouble(userData.getString("latitude","")),Double.parseDouble(userData.getString("longitude",""))), radius);
    geoQuery.removeAllListeners();
    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() 
        @Override
        public void onKeyEntered(String key, GeoLocation location) 
            arrayListUserIds.add(key);
        
        ...
    
    ...

它只给出最近的用户,而不是附近的所有用户。

我在互联网上搜索了很多但没有任何线索。

【问题讨论】:

您确定所有用户都在半径范围内吗? 是的。可以肯定的是,我已将半径增加到 10 公里。但结果是一样的。 您是否也尝试使用不同的位置坐标,因为您所有的位置都具有大致完全相同的坐标? 我也尝试过不同的位置。如果我使用完全相同的位置坐标有什么问题吗? 如果你要在地图上看到它们,你只会看到一个,因为它们在它下面,对吧? 【参考方案1】:

尝试使用另一个事件监听器:

    geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() 
                @Override
                public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location) 
                    if (dataSnapshot.exists()) 
                        arrayListUserIds.add(dataSnapshot.getKey());
                    
                
                ...

【讨论】:

以上是关于GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户的主要内容,如果未能解决你的问题,请参考以下文章

geoQuery不输出数据怎么办?

将 Firebase 查询与 GeoQuery 相结合,按名称搜索附近区域的帖子

我想使用 GeoFire 在 android 中填充 Firebase Recycler View

Android geofire获取一定半径内的用户列表

geofire android 存储和检索位置并将其显示在地图上

使用 android Geofire 获取经度和纬度