web-dev-qa-db-ja.com

Google Places APIを使用する

現在の位置を取得して、ユーザーの近く(1km以内)の場所に関する情報を表示するアプリケーションを開発します。

たとえば、Androidデバイスの現在位置に関連する1km以内に位置するレストラン、ショッピングモール、病院に関する情報を表示したいとします。

私はこのリンクをたどりました: AndroidでGoogle Places APIを使用 ..

Android?

34
Kartik Domadiya

留意すべきいくつかのポイント:

  • GoogleのPlaces APIを使用するには、Google MapのAPIキーを登録して取得する必要があります。
  • チュートリアルのクラスUrlSignerでは、変数の説明は次のとおりです。keyString =>は、Googleマップのapiキーです。 urlStringは、apiキーを使用して署名するURLです。
  • コードには、inputKeyinputUrlがあります。これらの2つの変数はテスト目的のためだけであり、必要に応じて省略できます。次のようにコードを直接記述できます。

    URL url = new URL(urlString);

    UrlSigner signer = new UrlSigner(keyString);

    String request = signer.signRequest(url.getPath(),url.getQuery());

    System.out.println("Signed URL :" + url.getProtocol() + "://" + url.getHost() + request);

urlSignerクラスのメインメソッド。

24
Harry Joy

APIはインドでうまく機能します(もちろん、世界中のどこでも機能します)。通過する必要があるのは Google Places API です。ユーザーの現在の場所と希望する場所のタイプを使用して、単にurlリクエストをGoogleに送信できます。

応答は、リクエストに応じてXMLまたはJsonのいずれかです。解析するだけです。あなたはあなたの周りの場所を50 kmまで得ることができます。 URLリクエストの例は次のとおりです。

https://maps.googleapis.com/maps/api/place/search/xml?location=9.934866,76.267235&radius=50000&types=country%7Cairport%7Camusement_park%7Cbank%7Cbook_store%7Cbus_station%7Ccafe%7Ccar_rental%7Ccar_repair%7Cchurch%7Cdoctor%7Cfire_station%7Cfood%7Chindu_temple%7Chospital%7Clawyer%7Clibrary%7Cmosque%7Cmuseum%7Cpark%7Cparking%7Cpharmacy%7Cpolice%7Cpost_office%7Crestaurant%7Cschool%7Ctrain_station%7Czoo&sensor=true&key=your_API_Key

*注意:%7Cは単なる「|」です。

12
Deepukjayan

Google Places APIは数週間前に公開されました。

Android compatible Java向けGoogle APIクライアントライブラリ を使用すると、Android=ランタイムからGoogle Places APIを使用できます。

Google Places API REST API は十分に文書化されています。JavaおよびGoogle APIを配置するには、次のブログエントリをご覧ください。

http://ddewaele.blogspot.com/2011/05/introducing-google-places-api.html

4
ddewaele

このチュートリアルはほぼ1年前に書かれたものであることに注意してください。 Places APIはそれ以来公開されているため、登録プロセスはより簡単になりました。次のドキュメントを参照してください。 http://code.google.com/apis/maps/documentation/places/#Limits

また、100を超えるさまざまなカテゴリを提供するカテゴリごとの検索、オートコンプリートサービスなどの新機能も利用可能になりました: http://code.google.com/apis/maps/documentation/places/autocomplete.html

特に、カテゴリ検索は、特にレストラン、ショッピングモール、病院を見つけるのに役立ちます。

1
sarah.w.99
/*
For google api key:-
login to your mail account
go to https://code.google.com/apis/console/
goto services tab
click on places api and google map api button. Fill the details
goto api access tab and copy your google api key
*/



package com.example.jstest;

import Java.io.BufferedReader;
import Java.io.IOException;
import Java.io.InputStream;
import Java.io.InputStreamReader;
import org.Apache.http.HttpEntity;
import org.Apache.http.HttpResponse;
import org.Apache.http.StatusLine;
import org.Apache.http.client.ClientProtocolException;
import org.Apache.http.client.methods.HttpGet;
import org.Apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import Android.os.Bundle;
import Android.app.Activity;
import Android.widget.Toast;

public class MainActivity extends Activity {
    private String googleAPIKey = "your google api key"; 
    DefaultHttpClient client;
    HttpResponse res;
    HttpGet req;
    InputStream in;
    JSONObject jsonobj;
    JSONArray resarray;
    String requesturl;
    HttpEntity jsonentity;

    final String TAG = getClass().getSimpleName();  


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        requesturl="https://maps.googleapis.com/maps/api/place/search/json?radius=500&sensor=false&key="+googleAPIKey+"&location=13.01,74.79";

        System.out.println("Request "+requesturl);
        client=new DefaultHttpClient();
        System.out.println("hello");

        req=new HttpGet(requesturl);
        System.out.println("hello");

        try {
            res=client.execute(req);
            StatusLine status = res.getStatusLine();
            int code = status.getStatusCode();
            System.out.println(code);
            if(code!=200)
            {
                System.out.println("Request Has not succeeded");
                finish();
            }

            jsonentity=res.getEntity();
            in = jsonentity.getContent();

            jsonobj=new JSONObject(convertStreamToString(in));


            resarray = jsonobj.getJSONArray("results");

            if(resarray.length()==0){
            }
            else{
                int len=resarray.length();
                for(int j=0;j<len;j++)
                {
                    Toast.makeText(getApplicationContext(), resarray.getJSONObject(j).getString("name") , Toast.LENGTH_LONG).show();
                }
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }   
        catch (JSONException e) {
            e.printStackTrace();
        }   
    }

    private String convertStreamToString(InputStream in) {
        BufferedReader br=new BufferedReader(new InputStreamReader(in));
        StringBuilder jsonstr=new StringBuilder();
        String line;
        try {
            while((line=br.readLine())!=null)
            {
                String t=line+"\n";
                jsonstr.append(t);
            }
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonstr.toString();
    }  

}
1
Harshal Voonna