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

Posted

技术标签:

【中文标题】Android geofire获取一定半径内的用户列表【英文标题】:Android geofire get a list of users within certain radius 【发布时间】:2019-07-29 06:59:10 【问题描述】:

我正在尝试将所有用户添加到距用户位置一定距离内的列表中。我已成功获取用户当前位置,并使用 geofire 将其存储在我的数据库中。我知道我必须使用 geofire 来查询结果,但我不确定如何将用户添加到我的列表中。我相信这是在 onKeyEntered 方法中完成的,但我不确定。

    private void addLocationToDB()

    database = FirebaseDatabase.getInstance().getReference("Leaderboard").child(userID);

    geoFire = new GeoFire(database);

    geoFire.setLocation("Location", new GeoLocation(latitude, longitude), new GeoFire.CompletionListener()
    
        @Override
        public void onComplete(String key, DatabaseError error)
        
            if(error != null)
            
                Log.d(TAG, "Problem storing users location - onComplete: " + error.getMessage());
            

            else
            
                getListNearbyUsers();
            
        
    );


private void getListNearbyUsers()

    geoQuery = geoFire.queryAtLocation(new GeoLocation(latitude, longitude), 1);

    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener()
    
        @Override
        public void onKeyEntered(String key, GeoLocation location)
        
            nearbyUsers.add(key);
        

        @Override
        public void onKeyExited(String key)
        

        

        @Override
        public void onKeyMoved(String key, GeoLocation location)
        

        

        @Override
        public void onGeoQueryReady()
        

        

        @Override
        public void onGeoQueryError(DatabaseError error)
        

        
    );

【问题讨论】:

【参考方案1】:

任何寻找答案的人都发现了我的错误。此方法应将用户 ID 作为参数而不是“位置”。然后我可以将所有“密钥”作为用户 ID 并过滤数据。希望这对遇到同样问题的人有所帮助。

geoFire.setLocation("Location", new GeoLocation(latitude, longitude), new GeoFire.CompletionListener()

    @Override
    public void onComplete(String key, DatabaseError error)
    
        if(error != null)
        
            Log.d(TAG, "Problem storing users location - onComplete: " + error.getMessage());
        

        else
        
            getListNearbyUsers();
        
    
);

【讨论】:

以上是关于Android geofire获取一定半径内的用户列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 geofire 查询计算特定位置半径中的可用用户?

Firebase GeoFire,从我当前位置检索具有特定半径的帖子

查询 CouchDB 获取一定半径内的 poi

使用 android Geofire 获取经度和纬度

在Django中获取一定半径内的所有点

将 GeoFire 查询加载到 RecyclerView 时应用程序崩溃