Я столкнулся с той же проблемой, так как я работаю с Place Pick в моем приложении, но так как Google решил удалить его, у меня нет выбора, кроме как найти способ найти решение!
Я решил использовать карту Google, чтобы воссоздать близкий опыт выбора места.
Сначала я создал карту в полноэкранном режиме и поместил ImageView
(Маркер) в качестве наложения на нее, как показано ниже в XML:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinator_layout"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.streetdev.goodnecity.SelectLocationPicker" />
<ImageView
android:layout_centerInParent="true"
android:src="@drawable/ic_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="56dp"
android:layout_height="56dp"
app:backgroundTint="@color/colorPrimaryDark"
android:src="@drawable/ic_plus"
android:layout_margin="16dp"
app:layout_anchor="@id/map"
app:layout_anchorGravity="bottom|end" />
</android.support.design.widget.CoordinatorLayout>
Таким образом, всякий раз, когда пользователь перемещается по карте, маркер будет оставаться в центре карты, как указатель места
Теперь все, что вам нужно сделать, это запустить сборщик карт с помощью startActivityForResult
, вы должны обработать cameraPosition
с gps (если он доступен), а затем, как только вы захотите вернуться с результатом (для меня я нажимаю на кнопку Fab), вы можете получить результат следующим образом:
LatLng latng = mMap.getCameraPosition().target;
Intent returnIntent = new Intent();
returnIntent.putExtra("result",String.valueOf(latng.latitude)+";"+String.valueOf(latng.longitude));
setResult(Activity.RESULT_OK,returnIntent);
finish();
Последний шаг - обработать результат в onActivityResult
, вы получите свой результат, вы делаете split
, используя ";"
, чтобы отделить широту от долготы
надеюсь, мой пример кому-нибудь поможет!