studio places google example custom android android-layout android-maps

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 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 y inputUrl . 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(); } }