example - google places autocomplete android
Uso de la API de Google Places (5)
Deseo desarrollar una aplicación en la que desee mostrar información sobre lugares cercanos (a menos de 1 km) del usuario al obtener su ubicación actual.
Digamos, por ejemplo, que quiero mostrar información sobre restaurantes, centros comerciales, hospitales ubicados a 1 km de distancia relacionados con la ubicación actual del dispositivo Android.
He pasado por este enlace: Usar la API de Google Places en Android ... pero no obtuve más.
¿Alguien ha usado la API de Google Places en Android?
La API de Google Places se hizo pública hace un par de semanas.
Utilizando la API de Google APIs compatible con Android Library para Java , puede usar la API de Google Places desde un tiempo de ejecución de Android.
La API REST API de Google Places está bien documentada. Para obtener un ejemplo sobre el uso de las API de Google Client Library para Java y la API de Google Places, ingrese la siguiente entrada de blog:
http://ddewaele.blogspot.com/2011/05/introducing-google-places-api.html
La API funciona bien en India (por supuesto, funcionará en cualquier parte del mundo). Lo que debes atravesar es la API de Google Places . Simplemente puede dar una solicitud de URL a google con la ubicación actual y los tipos de lugar del usuario que prefiera.
La respuesta puede ser XML o Json según su solicitud. Todo lo que tienes que hacer es analizarlo. Puede obtener lugares a su alrededor hasta 50 kms. Un ejemplo para la solicitud de URL es
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
* Nota:% 7C es solo "|".
Pruebe este tutorial: using-googles-places-api y siempre que tenga un problema, hágalo en un comentario.
Algunos puntos a tener en cuenta:
- Para usar la API Google Places, deberá registrarse y obtener la clave API de Google Map.
- En la clase UrlSigner en el tutorial, las descripciones de las variables son:
keyString
=> es la clave api del mapa de google.urlString
=> es la url que quieres firmar usando la tecla api. En el código, encontrará
inputKey
yinputUrl
. estas 2 variables son solo para fines de prueba; puede omitirlas si lo desea. Puede escribir código directamente de la siguiente manera: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);
en el método principal de la clase UrlSigner.
Tenga en cuenta que ese tutorial fue escrito hace casi un año. La API Places se ha lanzado al público desde entonces, por lo que el proceso de registro ahora es mucho más simple: consulte la documentación en: http://code.google.com/apis/maps/documentation/places/#Limits
También hay nuevas funciones disponibles ahora, incluida la búsqueda por categoría, con más de 100 categorías diferentes disponibles, y un servicio de Autocompletar: http://code.google.com/apis/maps/documentation/places/autocomplete.html
En particular, la búsqueda de categorías debería ayudarlo a encontrar restaurantes, centros comerciales y hospitales específicamente.
/*
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();
}
}