我使用 Realm 从数据库加载 POI。接下来通过mapsforge将此点添加到集群实现中。此代码运行良好:
RealmResults<GasolineRealm> gasolineRealms = presenter.getRealm().where(GasolineRealm.class)
.findAll();
for(int i=0; i<gasolineRealms.size(); i++){
geoItems.add(new GasolineGeoItem(gasolineRealms.get(i).getId(),
gasolineRealms.get(i).getLocalizationRealms().get(0).getTitle(),
gasolineRealms.get(i).getCoordinateLatitude(),
gasolineRealms.get(i).getCoordinateLongitude()));
clusterer.addItem(geoItems.get(i));
}
它在地图上绘制所有 POI,但如果我使用 RxJava for Realm 集群永远不要在地图上添加 POI。这是代码:
Realm.getDefaultInstance().where(GasolineRealm.class)
.findAllAsync()
.asObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<RealmResults<GasolineRealm>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(RealmResults<GasolineRealm> gasolineRealms) {
for(int i=0; i<gasolineRealms.size(); i++){
geoItems.add(new GasolineGeoItem(gasolineRealms.get(i).getId(),
gasolineRealms.get(i).getLocalizationRealms().get(0).getTitle(),
gasolineRealms.get(i).getCoordinateLatitude(),
gasolineRealms.get(i).getCoordinateLongitude()));
clusterer.addItem(geoItems.get(i));
}
}
});