Android StudioでGooglePlace Picker APIを実装する方法を知っている人はいますか?チュートリアルを試しましたが、失敗しました。場所が表示され、場所をクリックすると表示される、機能するAutoCompleteテキストフィールドが必要です。 Googleマップフラグメントで。
Yourbuild.gradle
に依存関係を追加します。
compile "com.google.Android.gms:play-services-places:10.2.0"
キーをAndroidManifest.xml
に追加します:
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="@string/map_api_key"/>
アクティビティ/フラグメントには、次の属性とメソッドが必要です。
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クリックリスナーまたは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();
}
}
結果onActivityResultをフェッチします。
@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));
}
}
}