【问题标题】:Android geofire get a list of users within certain radiusAndroid geofire获取一定半径内的用户列表
【发布时间】: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)
        {

        }
    });
}

【问题讨论】:

    标签: android firebase firebase-realtime-database geofire


    【解决方案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();
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多