解析地理查询始终为空

时间:2015-04-24 11:57:25

标签: java android parse-platform android-parsequeryadapter

我正在开发一款Android应用,除其他功能外,还可以检测用户附近的位置。为此,我使用基于Anywall app中的示例的Parse查询。问题是即使填充了我的数据库,此查询的结果也始终为空。这是我的代码:

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如何知道如何将该密钥与我在云中的类相关联?在我读过的所有例子中,“location”被用作键,但我不理解逻辑。我必须在Parse仪表板中设置一些东西吗?我的数据库中的每个地方都有经度和纬度。他们起初是String;我将它们改为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);

但是没用。请注意,当我放置与location无关的条件时,查询有效,例如whereEqualTo。你能解释一下这个问题吗?任何帮助将不胜感激。

此致 纳西斯

2 个答案:

答案 0 :(得分:0)

据我所知,您应该将类​​名(作为String)传递给ParseQuery

public static ParseQuery<VevantoParse> getQuery() {
    return ParseQuery.getQuery("VevantoParse"); // where VevantoParse is your Parse's class name
}

这是https://github.com/katzer/cordova-plugin-local-notifications/wiki/11.-Samples

答案 1 :(得分:0)

对于任何感兴趣的人,问题是我没有在我的服务器数据库中定义Parse Geo Point。要做到这一点,当你向数据库中添加一行时(我是从我的Java代码中添加的),你只需定义一个使用键命名的Parse Geo Point(在我的例子中为“location”),然后添加条件     mapQuery.whereWithinKilometers(“location”,userLocation,MAX_SEARCH_DISTANCE); 使用那个特定的钥匙。

祝你好运!