gpt4 book ai didi

android - whereNear 查询在 Parse 中似乎无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:46:33 24 4
gpt4 key购买 nike

我正在开发一款与地理位置相关的 Android 应用。我正在使用 Parse 作为后端。我需要根据用户的当前位置显示结果。

我正在使用这个查询:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Restaurants"); 
ParseGeoPoint sLatlong = new ParseGeoPoint(currentLat, currentLong);
query.whereNear("rest_location", sLatlong);

但是结果不是按距离排序的。

谁能帮帮我。

最佳答案

根据Android Documentation对于 Parse,默认排序顺序应该已经按距离(从最近到最远)排序,除非您自己指定另一个排序顺序。

另外,您可能想查看 ParseQuery.whereWithin*方法,因为您可以指定您只需要一定数量的英里、公里等范围内的位置。

如果所有其他方法都失败并且排序顺序不想在返回的位置上工作,您可以随时通过循环遍历 ParseObject 自己对它们进行排序s 从查询返回并使用 ParseObject.getParseGeoPoint("rest_location") .

这将返回一个 ParseGeoPoint对象,然后您可以执行以下操作

ParseGeoPoint.distanceInKilometersTo(sLatlong);

获取到用户位置的距离并对其进行排序。

这里有一个示例供引用 Comparator :

public class UserLocationComparator  implements Comparator<ParseObject> {

private final ParseGeoPoint userLoc;

public UserLocationComparator(ParseGeoPoint userLoc) {
this.userLoc = userLoc;
}

@Override
public int compare(ParseObject po1, ParseObject po2) {
ParseGeoPoint loc1 = po1.getParseGeoPoint("rest_location");
ParseGeoPoint loc2 = po2.getParseGeoPoint("rest_location");

return loc1 == null ?
(loc2 == null ? 0 : 1) :
(loc2 == null ? -1 : Double.compare(userLoc.distanceInKilometersTo(loc1), userLoc.distanceInKilometersTo(loc2)));
}
}

然后假设你有一个 List<ParseObject> results;简单地做:

Collections.sort(results, new UserLocationComparator(sLatlong));

关于android - whereNear 查询在 Parse 中似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35123750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com