2011-06-27 10 views
5

En mi aplicación tengo una actividad que se extiende MapActivity. y allí puse un AutoCompleteTextView y un botón llamado "Buscar" así que lo que escribo dentro de AutoCompleteTextView Y presiono el botón Buscar va a esa ubicación en el mapa de Google. AutoCompleteTextView es para un pequeño número de elementos que menciono en strings.xml. Pero quiero que funcione como motor de búsqueda de Google, como en el cuadro de búsqueda de Google, lo que sea que comencemos a escribirlo completa automáticamente cada palabra allí. La cosa es que toma datos del servidor de google. ¿No? Si es así, ¿cómo puedo vincular los datos a mi AutoCompleteTextView del servidor de Google para que funcione como el cuadro de búsqueda de Google. Estoy usando android API v2.2.android cómo hacer que AutoCompleteTextView funcione como cuadro de búsqueda de google

Respuesta

2

usted tiene que utilizar la API de Google Places, es necesario generar una clave de API primera lugar, consulte esta página:

http://code.google.com/apis/maps/documentation/places/

En mi caso he utilizado este código:

final ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,R.layout.list_item);  
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 
adapter.setNotifyOnChange(true); 
textView.setAdapter(adapter); 
textView.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) { if (count%3 == 1) { adapter.clear(); try { 

     URL googlePlaces = new URL(
     // URLEncoder.encode(url,"UTF-8"); 
       "https://maps.googleapis.com/maps/api/place/autocomplete/json?input="+ URLEncoder.encode(s.toString(), "UTF-8") 
+"&types=geocode&language=fr&sensor=true&key=<getyourAPIkey>"); 
     URLConnection tc = googlePlaces.openConnection(); 
     Log.d("GottaGo", URLEncoder.encode(s.toString())); 
     BufferedReader in = new BufferedReader(new InputStreamReader(
       tc.getInputStream())); 

     String line; 
     StringBuffer sb = new StringBuffer(); 
     while ((line = in.readLine()) != null) { 
     sb.append(line); 
     } 
     JSONObject predictions = new JSONObject(sb.toString());    
     JSONArray ja = new JSONArray(predictions.getString("predictions")); 

      for (int i = 0; i < ja.length(); i++) { 
       JSONObject jo = (JSONObject) ja.get(i); 
       adapter.add(jo.getString("description")); 
      } 


    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } }   

} 

public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub 

    } 

public void afterTextChanged(Editable s) { 

} }); 
Cuestiones relacionadas