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
5
A
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) {
} });