【发布时间】:2015-04-22 17:09:59
【问题描述】:
我目前正在开发一个 Android 应用程序,该应用程序可以返回与用户指定的偏好(比萨、咖啡、酒吧等)最接近的位置。为此,我在 Google Places API 中使用了Nearby Search Requests。这就是我构建 HTTP 请求的方式:
public String createRequestURL() {
String requestURL = "";
if ((googleApiKey != "") && (lat <= MAX_GOOGLE_LAT) && (lat >= MIN_GOOGLE_LAT)
&& (lng <= MAX_GOOGLE_LNG) && (lng >= MIN_GOOGLE_LNG)) {
requestURL += "https://maps.googleapis.com/maps/api/place/nearbysearch/json?";
requestURL += "location=" + lat + "," + lng;
requestURL += "&rankby=distance";
requestURL += "&keyword=" + keyword;
requestURL += "&opennow";
requestURL += "&key=" + googleApiKey;
}
return requestURL;
}
我正在尝试执行的测试查询是 lat = 45.5017, lng = 73.5673, keyword = "pizza",即查找蒙特利尔附近现在开放的所有披萨店。
当我对该 API 执行该查询时,我一直得到 ZERO_RESULTS 状态。我以前使用过radius 字段,但后来读过这个question and answer on stackoverflow,似乎在查询中使用rankby,然后删除我的应用程序中比X 米更远的所有查询响应更适合我想要的我的应用要做。
为什么我返回的是ZERO_RESULTS 状态,而不是我所在位置附近的实际披萨、咖啡、酒吧等场所?
编辑:
我也尝试过以下请求:
public String createRequestURL() {
String requestURL = "";
if ((googleApiKey != "") && (lat <= MAX_GOOGLE_LAT) && (lat >= MIN_GOOGLE_LAT)
&& (lng <= MAX_GOOGLE_LNG) && (lng >= MIN_GOOGLE_LNG)) {
requestURL += "https://maps.googleapis.com/maps/api/place/nearbysearch/json?";
requestURL += "location=" + lat + "," + lng;
requestURL += "&rankby=distance";
requestURL += "&types=food";
requestURL += "&key=" + googleApiKey;
}
return requestURL;
}
这个简单的请求仍然返回状态ZERO_RESULTS。
【问题讨论】:
-
您是否尝试过删除诸如
opennow和keyword之类的参数,并提供一个您可以确定附近有事情发生的位置?我认为这可能是一个很好的第一步,可以确保最基本的查询一切正常。 -
@AlvaroSantisteban 我尝试删除
opennow,并且从 API 返回相同的ZERO_RESULTS状态。不幸的是,当使用rankby=字段时,我无法删除keyword,因为它是必需的(或者types或name)。 -
如果您没有输入错误。您可能想说蒙特利尔的 lng = -73.5673
-
天哪,谢谢,这确实是问题所在。您可以将其作为答案,我将选择它作为官方答案。
-
另外,如果您要去巴尔喀什湖畔游览,周围没有比萨饼店,您不妨自备。
标签: android google-api google-places-api