[英]Google Place Picker Android Studio
有誰知道如何在 Android Studio 中實現 Google Place Picker API? 試過教程,不成功。 我想要一個顯示位置的工作自動完成文本字段,當您單擊該位置時,它將顯示在 Google 地圖片段中。
將依賴項添加到您的build.gradle
(將<version-number>
替換為您想要的版本,例如,您可以在Gradle, Please 中找到該版本):
compile "com.google.android.gms:play-services-places:<version-number>"
將您的密鑰添加到您的AndroidManifest.xml
:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/map_api_key"/>
您的 Activity/Fragment 需要這些屬性和方法:
private final static int PLACE_PICKER_REQUEST = 999;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
checkPermissionOnActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode){
case PLACE_PICKER_REQUEST:
Place place = PlacePicker.getPlace(this, data);
String placeName = String.format("Place: %s", place.getName());
double latitude = place.getLatLng().latitude;
double longitude = place.getLatLng().longitude;
}
}
}
最后,這是打開PlacePicker
的代碼
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
// for activty
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
// for fragment
//startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
在 Button clicklistner 或要打開 PlacePicker 的位置調用此方法:
private final static int PLACE_PICKER_REQUEST = 111;
private void openPlacePicker() {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
// for activty
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
// for fragment
//startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
並在 ActivityResult 上獲取結果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PLACE_PICKER_REQUEST:
Place place = PlacePicker.getPlace(this, data);
String placeName = String.format("Place: %s", place.getName());
double latitude = place.getLatLng().latitude;
double longitude = place.getLatLng().longitude;
LatLng coordinate = new LatLng(latitude, longitude);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(coordinate);
markerOptions.title(placeName); //Here Total Address is address which you want to show on marker
mGoogleMap.clear();
markerOptions.icon(
BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
markerOptions.getPosition();
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(coordinate));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.