Использование Google Places API

Я хочу разработать приложение, в котором я хочу отображать информацию о местах поблизости (в пределах 1 км) от пользователя, получая его текущее местоположение.

Скажем, например, я хочу отобразить информацию о ресторанах, торговых центрах, больницах, расположенных в пределах 1 км, связанных с текущим местоположением устройства Android.

Я прошел по этой ссылке: Использование Google Places API в Android... Но больше не получил.

Кто-нибудь использовал Google Places API в Android?

5 ответов

Решение

Попробуйте этот урок: using-googles-place-api и, где у вас возникнут проблемы, задавайте это в комментариях.

Некоторые моменты, которые следует иметь в виду:

  • Чтобы использовать Google Places API, вам необходимо зарегистрироваться и получить ключ API Google Map.
  • В классе UrlSigner в учебнике описания переменных: keyString => это ваш ключ API Google Map. urlString URL-адрес, который вы хотите подписать с помощью ключа API.
  • В коде вы найдете inputKey а также inputUrl, Эти две переменные только для целей тестирования, вы можете опустить их, если хотите. Вы можете напрямую написать код следующим образом:

    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.

API хорошо работает в Индии (конечно, будет работать в любой точке земного шара). То, что вы должны пройти, это Google Places API. Вы можете просто отправить URL-адрес в Google с указанием текущего местоположения пользователя и типов мест, которые вы предпочитаете.

Ответ может быть либо XML, либо Json согласно вашему запросу. Все, что вам нужно сделать, это разобрать. Вы можете получить места вокруг вас до 50 км. Пример для запроса 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 это просто "|".

API Google Places стал общедоступным пару недель назад.

Используя совместимую с Android клиентскую библиотеку API Google для Java, вы можете использовать Google Places API из среды выполнения Android.

API REST API Google Адресов хорошо документирован. Пример использования клиентской библиотеки API Google для Java и API Google Адресов можно найти в следующей записи блога:

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

/*
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();
    }  

}

Имейте в виду, этот учебник был написан почти год назад. С тех пор API Places был открыт для общественности, поэтому процесс регистрации теперь намного проще - см. Документацию по адресу: http://code.google.com/apis/maps/documentation/places/

Также теперь доступны новые функции, в том числе поиск по категориям, более 100 различных категорий и служба автозаполнения: http://code.google.com/apis/maps/documentation/places/autocomplete.html

В частности, поиск по категориям должен помочь вам найти рестораны, торговые центры и больницы в частности.

Другие вопросы по тегам