Android 从firebase检索数据到google地图

Android 从firebase检索数据到google地图,android,google-maps,firebase-realtime-database,Android,Google Maps,Firebase Realtime Database,我正在制作一个应用程序,从firebase下载LatLngs,并在谷歌地图API中将其显示为标记,用户可以添加新的LatLngs 在我的数据库中,我还有标记的价格点和类型。在主屏幕中,用户可以选择要在地图上看到的标记类型 因此,我的应用程序执行如下操作: locations.orderByChild(pricepoint).equalTo(choosenPricepoint); 然后通过编程检查类型是否与用户选择的类型匹配 int type = Integer.parseInt(locatio

我正在制作一个应用程序,从firebase下载LatLngs,并在
谷歌地图API
中将其显示为标记,用户可以添加新的
LatLngs

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

因此,我的应用程序执行如下操作:

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条记录,但我预计数据库中会有超过10000条记录,所以我担心速度太慢

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

您可以使用firebase库,该库使用GeoHash将lat+lon合并到单个属性中。这样,您可以直接在数据库上进行距离筛选

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


正如您所看到的,它们具有相同的
id
。因此,首先您通过GeoFire在
geo_data
条目中查询附近对象,然后您将获得附近对象的id,然后,您可以使用
ids
直接从数据库检索对象及其属性。在我的例子中,在
user\u data
entry

中,您需要在特定区域或整个地图上显示标记吗?现在我在地图上显示所有标记,但我认为,如果用户必须选择他想要看到这些标记的城市,那也没关系。因为现在看起来这真的会减慢应用程序的速度,对吗?我不知道,但一次显示10000个标记似乎是一个非常糟糕的主意,因为我认为这可能会占用大量内存。对,因此您可以在特定区域显示一些标记,当用户在地图上移动时,您可以下载更多位置。好的,我将学习geofire,但我想提前问一下,有没有办法通过geofire的地理定位功能向firebase发送一些额外的数据?我现在将编辑答案,并解释我是如何使用它的。好的,这就是我所想的,非常感谢!不客气,如果您还有其他问题,请随时提问,我会尽力帮助您;)