Java 我想计算用户半径并在android Firebase中检索用户id

Java 我想计算用户半径并在android Firebase中检索用户id,java,android,google-maps,firebase,firebase-realtime-database,Java,Android,Google Maps,Firebase,Firebase Realtime Database,我想,当用户上传帖子,所以通知应该发送到10公里半径的用户。为此,我通过从firebase数据库检索用户纬度和经度,并将其与上传帖子的纬度和经度一起逐个发送到distanceBetween函数来计算用户半径。但问题是哪个用户在radius中。我无法检索用户id和注册令牌来发送通知 这是我的密码 dataref.addValueEventListener(new com.google.firebase.database.ValueEventListener() {

我想,当用户上传帖子,所以通知应该发送到10公里半径的用户。为此,我通过从firebase数据库检索用户纬度和经度,并将其与上传帖子的纬度和经度一起逐个发送到distanceBetween函数来计算用户半径。但问题是哪个用户在radius中。我无法检索用户id和注册令牌来发送通知

这是我的密码

dataref.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
                    @Override
                    public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {

                        for (com.google.firebase.database.DataSnapshot data : dataSnapshot.getChildren()) 
                            {
                             datasnap = data;
                                            }

Location.distanceBetween(Post_latitude, Post_longitude,Double.parseDouble(datasnap.child("latitude").getValue(String.class)), Double.parseDouble(datasnap.child("longitude").getValue(String.class)), results);
                        final double km = (results[0] / 1000);

                        if (km <= 10000) {
                            if (!String.valueOf(datasnap.getKey().toString()).equals(userID)) {

                //getting the user id here

                               Log.d("USerID", datasnap.getKey().toString() )
                            }
                        }

                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

我已经找到了解决我问题的办法。 使用geofire保存和检索指定半径内的用户位置

代码如下:

//在[37.7832,-122.4056]周围创建一个半径为0.6公里的新查询 GeoQuery GeoQuery=geoFire.queryLocationNew GeoLocation37.7832,-122.4056,0.6


有关详细信息,请查看链接:

为什么不为数据库中的用户计算必要的纬度和经度范围。创建一个查询,只返回该半径内的那些用户及其令牌,然后向所有这些用户发送通知。查看Firebase文档,了解如何向多个用户发送通知。发送通知不是问题,但问题是我无法创建您所说的内容。创建一个只计算并返回必要标记的查询。我不太明白。你不确定如何计算距离吗?或者您不确定如何编写查询?我正在计算位置中的距离,distanceBetween函数。并以这种方式进行查询。但这并不合适。最终双公里=结果[0]/1000;但是我想我的问题不是我需要的对。。如果你能正确引导我。