📅  最后修改于: 2023-12-03 15:38:12.446000             🧑  作者: Mango
当用户在输入地址时,Places AutoCompleteBar 会向他们提供自动完成建议。这是通过使用 Google Places API 实现的,该 API 可以帮助您访问全球地理位置和地点数据。
以下是在 Android 应用程序中实现 Places AutocompleteBar 的步骤:
在你应用的 build.gradle 文件中,向 dependencies 添加以下依赖项:
implementation 'com.google.android.libraries.places:places:1.0.0'
要使用 Google Places API,您需要先获取 API 密钥。请遵循以下步骤:
在您的应用程序中初始化 Places SDK。在您的 Application 类中添加以下代码行:
import com.google.android.libraries.places.api.Places;
// ...
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化 Places SDK
Places.initialize(getApplicationContext(), "YOUR_API_KEY");
}
}
将 YOUR_API_KEY 替换为您的 API 密钥。
创建一个包含 Places AutocompleteBar 的布局文件。可以使用以下 XML 代码段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.libraries.places.widget.AutocompleteSupportFragment
android:id="@+id/autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your address"/>
</LinearLayout>
在您的 Activity 或 Fragment 类中,使用以下代码设置 AutocompleteSupportFragment:
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.widget.AutocompleteSupportFragment;
import com.google.android.libraries.places.widget.listener.PlaceSelectionListener;
// ...
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// 初始化 AutocompleteSupportFragment
AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment)
getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);
// 限制自动完成预测为特定国家或地区
autocompleteFragment.setCountry("US"); // 美国
// 设置文本更改、选择、取消选择回调
autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
Log.i("TAG", "Place: " + place.getName() + ", " + place.getId());
}
@Override
public void onError(Status status) {
Log.i("TAG", "An error occurred: " + status);
}
});
}
}
将 R.id.autocomplete_fragment 替换为您的 AutocompleteSupportFragment ID。
通过上述步骤,您可以在 Android 应用程序中实现 Google Places AutocompleteBar。由于 Places AutocompleteBar 提供的自动完成功能,用户可以更快、更准确地输入地址。