私のアプリケーションでは、拡張するアクティビティがありますMapActivity
。そこにAutoCompleteTextView
「検索」というボタンを配置して、その中に書いてAutoCompleteTextView
検索ボタンを押すと、Googleマップのその場所に移動します。私がstrings.xmlAutoCompleteTextView
で言及した少数のアイテムです。しかし、Google検索ボックスのように、Google検索ボックスのように、Google検索エンジンとして機能する必要があります。問題は、Googleサーバーからデータを取得することです。そうではありませんか?もしそうなら、 GoogleサーバーからAutoCompleteTextViewにデータをバインドして、Google検索ボックスとして機能させるにはどうすればよいですか。Android API v2.2 を使用しています。
質問する
3609 次
2 に答える
2
Google Places API を使用する必要があります。最初に Place API キーを生成する必要があります。このページを確認してください:
http://code.google.com/apis/maps/documentation/places/
私の場合、私はこのコードを使用しました:
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) {
} });
于 2011-12-04T04:36:30.160 に答える