我正在开发一个 Android 应用程序,该应用程序除其他功能外,还可以检测用户附近的位置。为此,我使用基于Anywall 应用程序示例的 Parse Query 。问题是这个查询的结果总是空的,即使我的数据库已经填充了。这是我的代码:
private static final int MAX_SEARCH_DISTANCE = 150;
private static final int MAX_SEARCH_LIMIT = 10;
ParseGeoPoint userLocation = new ParseGeoPoint(Double.valueOf("23.0465320"), Double.valueOf("72.5925700"));
ParseQuery<VevantoParse> mapQuery = VevantoParse.getQuery();
mapQuery.whereWithinKilometers("location", userLocation, MAX_SEARCH_DISTANCE);
扩展 ParseObject 的类是:
@ParseClassName("Posts")
public class VevantoParse extends ParseObject {
public static ParseQuery<VevantoParse> getQuery() {
return ParseQuery.getQuery(VevantoParse.class);
}
}
我不明白一件事:“位置”键。Parse 如何知道如何将该密钥与我在云中的课程相关联?在我读过的所有示例中,“位置”都被用作键,但我不明白其中的逻辑。我必须在 Parse 仪表板中设置什么吗?我数据库中的每个地方都有纬度和经度。起初他们是字符串;我将它们更改为 Double,但它仍然不起作用。
我还尝试使用不依赖于我的 VevantoParse 类的查询:
ParseQuery<ParseObject> getPlacesQuery = ParseQuery.getQuery("my_class_name");
ParseGeoPoint userLocation = new ParseGeoPoint(Double.valueOf("23.0465320"), Double.valueOf("72.5925700"));
getPlacesQuery.whereWithinKilometers("location", userLocation, MAX_SEARCH_DISTANCE);
但是没用。请注意,当我放置与位置无关的条件时,查询有效,例如 whereEqualTo。你能解释一下这个问题吗?任何帮助将不胜感激。
问候, 纳西斯