我正在使用文字搜索Google Places API开发Android应用程序。目标是给出一个地址并获得经度和经度,以便我可以在地图上标记它。 为此,我将以下请求发送到Google商家信息:
使用此代码:
public class GeoLocRDV {
private LatLng pos;
private static final String API_KEY = " xxxxx_MY_KEY ";
private static final String PLACES_TEXT_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/textsearch/json?";
public GeoLocRDV(String rdvPlace){
String url;
try {
url = PLACES_TEXT_SEARCH_URL+"query=" + URLEncoder.encode(rdvPlace,"UTF-8") + "&sensor=true&key=" + API_KEY;
Log.e("DEBUG HTTP", url);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
response = httpclient.execute(new HttpGet(url));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
String responseString = out.toString();
Log.e("DEBUG RESP", responseString);
JSONObject jsonObj = new JSONObject(responseString);
JSONArray results = (JSONArray) jsonObj.get("results");
Log.e("DEBUG JSON", results.toString());
double rdvLat = (Double) results.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lat");
Log.e("DEBUG JSON lat", Float.toString((float) rdvLat));
double rdvLng = (Double) results.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lng");
Log.e("DEBUG JSON lng", Float.toString((float) rdvLng));
this.pos = new LatLng(rdvLat, rdvLng);
Log.e("DEBUG GEO", pos.toString());
}else{
response.getEntity().getContent().close();
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
不幸的是我得到了这个回复:
{
"html_attributions" : [],
"results" : [],
"status" : "REQUEST_DENIED"
}
我试图:
我在StackOverflow上读到我可以尝试将端口地址更改为443以获取Places API的响应,但我不知道该怎么做。
最后,我指定在获取API密钥后激活了Google商家信息服务(因为我也使用的是Maps API)并且它是Android密钥(不是服务器或浏览器),但它不应该是一个问题因为密钥适用于整个应用程序。
我没有想法解决这个请求问题,所以我希望有人可以帮助我。
提前致谢。