2

テキスト検索 Google Places API を使用して Android 用のアプリケーションを開発しています。目標は、住所を指定して緯度と経度を取得し、地図上にマークできるようにすることです。そのために、次のリクエストを Google プレイスに送信します。

https://maps.googleapis.com/maps/api/place/textsearch/json?query=46+Rue+Emile+Raspail+Arcueil&sensor=true&key=MY_API_KEY

このコードを使用して:

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"
}

私がしようとしました :

  • 「センサー」パラメーターを「true」と「false」に切り替えます
  • https を http に変更します
  • キーが正しくコピー/貼り付けされ、マニフェスト内のキーに対応していることを確認します
  • また、API コンソールに移動してから、[サービス] に移動し、[アクティブなサービス] タブをクリックして、[Places API] がオンになっていることを確認しました。をクリックしましたか?そして「やってみよう!」その横にリンクします。また、同じ JSON (REQUEST_DENIED) も返されました。

Places API からの応答を取得するために、ポート アドレスを 443 に変更しようとする StackOverflow を読みましたが、その方法がわかりません。

最後に、API KEY を取得した後に Google Places サービスを有効にしたこと (Maps API も使用しているため) を指定します。これは Android キー (サーバーやブラウザーではない) ですが、キーはアプリケーション全体で機能します。

このリクエストの問題を解決するためのアイデアが不足しているので、誰かが私を助けてくれることを願っています.

前もって感謝します。

4

0 に答える 0