【问题标题】:Retrieving data from firebase to google maps从 Firebase 检索数据到谷歌地图
【发布时间】:2018-10-11 08:39:45
【问题描述】:

我正在制作一个应用程序,它从 firebase 下载 LatLngs 并将它们显示为google maps API 中的标记,用户可以添加新的LatLngs

在我的数据库中,我还有markers 的价格点和类型。在主屏幕中,用户可以选择他想在地图上看到的标记类型。

所以我的应用程序做了这样的事情:

locations.orderByChild(pricepoint).equalTo(choosenPricepoint);

然后我以编程方式检查类型是否与用户选择的匹配

int type = Integer.parseInt(locations.child("restaurantType").getValue().toString();
if(type == funCode||  type == runingCode|| type == sportsCode
{
   mMap.addMarker(new MarkerOptions().position(snapshot.getLatlng);
}

它适用于 250 条记录,但我预计我的数据库中有超过 10,000 条记录,所以我担心它会太慢。

我不知道是否仅在用户的地图相机所在的位置显示标记并删除其他标记会更快。你有什么建议?

【问题讨论】:

  • 您需要在特定区域或整个地图上显示标记吗?
  • 现在我在整个地图上显示标记,但我认为如果用户必须选择他想看到这些标记的城市也可以。
  • 因为现在看起来它真的会减慢应用程序的速度,对吗?我不知道,但一次显示 10,000 个标记似乎是个坏主意,因为我认为它可能会占用大量内存。
  • 对,所以你可以在特定区域显示一些,当用户在地图上移动时,你可以下载更多位置。

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


【解决方案1】:

您可以使用 GeoFire ,这是一个使用 GeoHash 将 lat+lon 合并为单个属性的 firebase 库。这样您就可以直接在数据库上进行距离过滤。

firebase 数据库中应该有 2 个条目,一个用于设置对象位置,一个用于设置对象及其字段。

如您所见,它们具有相同的id。因此,首先您在geo_data 条目中通过GeoFire 查询附近的对象,您将获得附近对象的ID,然后您可以使用检索对象它的属性直接从数据库中使用 ids 在我的情况下是 user_data 条目

【讨论】:

  • 好的,我要去学geofire了,不过想提前问一下,有没有什么办法可以通过geofire的geolocation向firebase发送一些额外的数据?
  • 我现在将编辑答案并解释我是如何使用它的。
  • 好的,我就是这么想的,非常感谢!
  • 不客气,如果还有其他问题可以在这里提问,我会尽力帮助;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2012-03-09
  • 2014-01-24
  • 2020-07-03
  • 2014-09-02
  • 2017-08-16
  • 1970-01-01
相关资源
最近更新 更多