我正在开发一个应用程序,我在 Room 数据库中存储了一种保存他的纬度和经度的对象。我需要一个查询来检索此类对象的列表,其中包含靠近(假设为 5 公里)另一个 lat/lng 点的对象(我使用位于其他类中的名为 getVincentyDistance 的方法)。我现在不知道是否可以直接在 Room 中执行,或者我可以在我的存储库中使用 RXJava 从数据库中获取数据时实现它?我也想首先从数据库中获取项目,如果它们小于 20,我从网络中获取 这是代码:
// TODO
@Query("SELECT * FROM Place as P WHERE getVincentyDistance(P.latitude, P.longitude, :lat, :lng) < :distance")
Flowable<List<Place>> getPlaces(double lat, double lng, double distance);
return placesDao
.getPlaces(latitude, longitude, rad)
.flatMap(places -> {
if (places.size() < 20) {
return placesService.getPlaces(location, radius, query);
} else {
return Single.just(places);
}
});