【问题标题】:Find closest latlng from current location from list of latlng, stored in Firebase从存储在 Firebase 中的 latlng 列表中查找距当前位置最近的 latlng
【发布时间】:2023-03-04 00:18:01
【问题描述】:

我在空闲时间制作应用程序,但我遇到了一个难题。

我在我的 firebase 数据库中存储了不同的用户提交的地点(以标记的形式),并且我希望其他用户能够看到这些地点,如果他们在他们当前位置的某个缩放距离内。我的 firebase 数据库如下所示:

userPlaces
- userToken
    - lat
    - lng

目前我需要处理的只是当前用户自己的 currentplace latlng。我很难看到我应该如何制作它,以便他们可以看到存储在 firebase 中的其他用户标记。

简而言之,当前用户需要能够从 firebase 中提取信息并将相关标记放在地图上,与用户当前所在的位置有关。我不希望代码也提取太多数据,所以如果有的话我可以针对我需要的那些,那会更好(如果可能的话,也许对 latlng 进行分类)。如果有 1000 个条目,我不想检查每个条目,这样我就可以提取正确的条目。

提前,谢谢:)

【问题讨论】:

标签: google-maps firebase firebase-realtime-database google-maps-markers latitude-longitude


【解决方案1】:

您可以在 latlng 字段上使用 firebase 查询 orderByChild() 方法。您必须有一个范围,例如,如果您当前的纬度是 30.00,那么请给我 20.00 到 40.00 范围内的结果。

FirebaseDatabase.getInstance().getReference().child("userPlaces")
            .orderByChild("lat").startAt(20.00).endAt(40.00)
            .addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    /* Write your logic here*/
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                    /* Write your logic here*/
                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                    /* Write your logic here*/
                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                    /* Write your logic here*/
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    /* Write your logic here*/
                }
            });

这将帮助您仅获取所需的相关数据。但不要忘记将.indexOn 放入您的firebase 数据库规则中,否则它将在客户端下载所有数据然后过滤它。阅读更多关于它的信息here

通过complex queries using firebase realtime database。这可能会帮助您以更优化的方式重组您的数据库结构。

【讨论】:

  • 非常感谢,我会试试这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
相关资源
最近更新 更多