Android 如何按距离对RealmList或RealmResult进行排序?

Android 如何按距离对RealmList或RealmResult进行排序?,android,sorting,realm,Android,Sorting,Realm,给定一个包含纬度和经度字段的对象,您就有了此类对象的RealmList或RealmResult。你是如何按距离排序的,比如你的电流 脑海中浮现的想法有: 添加一个字段calculatedDistance,迭代所有对象并设置它。这种方法的问题是,下次调用时,将用null覆盖此字段 调用Collections.sort(…)在列表或结果中使用我自己的自定义,但我在任何地方都找不到它记录了托管RealmList或RealmResult在按“局外人”排序时的行为 使用and等做一个非常高级的查询,但是我

给定一个包含
纬度
经度
字段的对象,您就有了此类对象的RealmList或RealmResult。你是如何按距离排序的,比如你的电流

脑海中浮现的想法有:

  • 添加一个字段
    calculatedDistance
    ,迭代所有对象并设置它。这种方法的问题是,下次调用时,将用null覆盖此字段
  • 调用Collections.sort(…)在列表或结果中使用我自己的自定义,但我在任何地方都找不到它记录了托管RealmList或RealmResult在按“局外人”排序时的行为
  • 使用and等做一个非常高级的查询,但是我想不出一个好主意

  • Android上有人找到了一个好的解决方案吗?

    像这样的东西真的需要地理空间支持才能以任何有效的方式工作

    现在我认为最好的办法是将数据复制到领域外,并在工作线程中进行手动处理

    如果您在HandlerThread中实现它,您可以执行如下操作

    RealmResults<City> results = realm.where(City.class).findAllAsync();
    results.addChangeListener(new RealmChangeListener<Results<City>>() {
      @Override
      public void onChange(RealmResults<City> cities) {
        List<City> standaloneCities = realm.copyFromRealm(cities);
        doManualSorting(standaloneCities);
        sendToUiThread(standaloneCities);
      }
    });
    
    RealmResults results=realm.where(City.class).findalsync();
    results.addChangeListener(新的RealmChangeListener(){
    @凌驾
    更改后的公共无效(RealmResults城市){
    列表standaloneCities=realm.copyFromRealm(城市);
    领域分类(标准化);
    Sendtoithread(标准要求);
    }
    });
    
    据我所知,这已经在路线图上了,但就我所知,这并不是一个优先事项。“这里有一个快速的解决方案,但我真的没有快速。”EpicPandaForce谢谢,我添加了我的投票。同时,我真的很想找到一个解决办法。我查看了Swift代码,它使用了我们在Java领域没有的扩展,我相信。@Christain Melchior,我已经按照相同的方法对我的搜索结果进行了排序,以获得30K数据,但用户界面在real.copyFromRealm(cities)冻结。非常感谢您对此的及时回复