我正在创建一个从firebase下载LatLng并在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条记录,所以我担心它会太慢。
我不知道是否只显示用户地图相机的标记,删除其他标记会更快。你有什么建议?
答案 0 :(得分:1)
您可以使用GeoFire,这是一个使用GeoHashes将lat + lon合并为单个属性的firebase库。这样您就可以直接在数据库上进行距离过滤。
你应该在firebase数据库中有2个条目,一个用于设置对象位置,另一个用于设置对象及其字段。
正如你所看到的那样id
。所以首先你要在geo_data
条目中通过GeoFire查询附近的对象,你会得到附近物体的id,然后你可以使用我ids
条目中的user_data
直接从数据库中检索对象及其属性