如何将两个ParseGeoPoint对象关联到parse.com后端中的同一用户?

时间:2014-03-12 17:30:40

标签: android parse-platform

我想存储两个ParseGeoPoint对象:src和dest,其中src是用户的currentLocation,dest是使用地理编码从地址生成的位置。我的应用中的每个用户必须拥有或者更确切地说拥有src和dest。我创建了一个ParseClass,它有一个ParseUser obj和两个ParseGeoPoint对象,即src和dest。但是,当我尝试存储此类的实例时,它返回一个ParseException,该状态指出只有1个ParseGeoPoint对象可以存储在类中。我知道这可能是解析的限制。

但是我需要它们在同一个类中,因为:我打算运行查询来检索用户列表到同一个dest并由他们的src排序。通过这种方式,我的应用用户可以找到他们附近的其他用户访问相同的目标。使用ParseQueryAdapter在列表视图中填充结果。

这就是我现在正在做的事情。如果它有助于使情况更清楚

    // Set up a customized query
    ParseQueryAdapter.QueryFactory<UserLocationObject> factory = new ParseQueryAdapter.QueryFactory<UserLocationObject>() 
    {
        public ParseQuery<UserLocationObject> create()
        {
            Location myLoc =currentLocation;
            ParseGeoPoint src=geoPointFromLocation(myLoc);              
            ParseQuery<UserLocationObject> query = UserLocationObject.getQuery();
            query.include("user");query.whereNear("src", src);query.whereEqualTo("dest", dest);
            query.setLimit(MAX_SEARCH_RESULTS);
            return query;
          }
        };

    // Set up the query adapter
    locationInfo = new ParseQueryAdapter<UserLocationObject>(this, factory) {
      @Override
      public View getItemView(UserLocationObject post, View view, ViewGroup parent) {
        if (view == null) {
          view = View.inflate(getContext(), R.layout.activity_find_poolers, null);
        }
        return view;
      }
    };
    // Attach the query adapter to the view
ListView listView = (ListView) this.findViewById(R.id.listView_findPoolers);
listView.setAdapter(locationInfo);

有没有办法可以存储用户的src和dest,以便我可以轻松查询它们并填充我的列表视图。应该生成满足上述约束的列表。

1 个答案:

答案 0 :(得分:0)

来自docs

  

类中只有一个键可能包含GeoPoint。

我想到的一件事是创建两个额外的类,每个类都包含ParseGeoPoint,并从User类中添加它们的关系。例如,您可以创建Origin类和Destination类,并使每个类都有一个ParseGeoPoint的列。然后,您可以从User类添加对每个类的引用。