我想计算用户半径并检索android Firebase中的用户ID

时间:2017-08-08 18:17:28

标签: java android google-maps firebase firebase-realtime-database

我希望当用户上传帖子时,通知应该以10公里半径的形式发送给用户。为此,我通过从firebase数据库检索用户纬度和经度并逐个将其发送到distanceBetween函数以及从其上传的帖子的纬度和经度来计算用户半径。但问题是哪个用户进入radius.And我无法检索用户ID和reg Token发送通知。

这是我的代码

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) {

                    }
                });

Here is my database image

1 个答案:

答案 0 :(得分:0)

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

这是代码:

//围绕半径为0.6公里的[37.7832,-122.4056]创建一个新查询 GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832,-122.4056),0.6);

有关详细信息,请查看链接:https://github.com/firebase/geofire-java