2011-06-27 18 views
5

W mojej aplikacji Mam działanie, które rozszerza MapActivity. i tam umieszczam AutoCompleteTextView i przycisk o nazwie "Szukaj", więc to, co piszę w ramach AutoCompleteTextView I naciśnij przycisk Szukaj, aby przejść do tej lokalizacji na mapie Google. AutoCompleteTextView jest dla małej liczby elementów, o których wspomniałem w strings.xml. Ale chcę, żeby to działało jak wyszukiwarka google, tak jak w polu wyszukiwania Google, cokolwiek zaczniemy pisać, automatycznie uzupełnia każde słowo tam. Rzecz w tym, że pobiera dane z serwera Google. Czyż nie? Jeśli tak, to jak mogę powiązać dane z moim serwerem AutoCompleteTextView z serwera Google, aby działało jak pole wyszukiwania Google. Używam Android API v2.2.android jak zrobić AutoCompleteTextView działa jak google pole wyszukiwania

Odpowiedz

2

Musisz użyć Google Places API, należy najpierw wygenerować klucz API miejsce sprawdzić tę stronę:

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

W moim przypadku użyłem tego kodu:

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) { 

} }); 
Powiązane problemy