Что я пытаюсь сделать, так это создать приложение Google Maps, в котором я могу перемещать карту, а положение маркера остается по центру (DONE), что-то вроде Uber. Затем после нажатия кнопки (buttonGPS) получите координаты широты (tvValueLatitude) и долготы (tvValueLatitude) для отображения в двух текстовых представлениях (DONE). Мне нужна помощь, чтобы скрыть синюю точку, оставив кнопку в правом верхнем углу, а также получить координаты, откуда я поставил серый маркер при перемещении карты. введите описание изображения здесь Далее идет xml файл
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MapsActivity"
android:paddingBottom = "@dimen/activity_vertical_margin"
android:paddingLeft = "@dimen/activity_horizontal_margin"
android:paddingRight = "@dimen/activity_horizontal_margin"
android:paddingTop = "@dimen/activity_vertical_margin">
<RelativeLayout
android:id = "@+id/rlmap"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:layout_above = "@+id/rlData">
<LinearLayout
android:orientation = "vertical"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<fragment xmlns:android = "http://schemas.android.com/apk/res/android"
android:name = "com.google.android.gms.maps.SupportMapFragment"
android:id = "@+id/map_fragment"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
<ImageView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_centerInParent = "true"
android:src = "@drawable/pin"
/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id = "@+id/rlData"
android:paddingLeft = "@dimen/activity_horizontal_margin"
android:paddingTop = "@dimen/activity_vertical_margin"
android:paddingRight = "@dimen/activity_horizontal_margin"
android:paddingBottom = "0dp"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_alignParentBottom = "true"
android:layout_alignParentStart = "true">
<LinearLayout
android:id = "@+id/llGPS"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_horizontal_margin"
android:divider = "?android:dividerHorizontal"
android:orientation = "horizontal"
android:showDividers = "middle">
<Button
android:id = "@+id/buttonGPS"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_vertical_margin"
android:layout_weight = "1"
android:gravity = "center"
android:text = "Get GPS" />
<LinearLayout
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_horizontal_margin"
android:layout_weight = "1"
android:divider = "?android:dividerVertical"
android:orientation = "vertical"
android:showDividers = "middle">
<TextView
android:id = "@+id/tvLatitude"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:gravity = "center"
android:text = "@string/Latitude"
android:textAppearance = "?android:attr/textAppearanceMedium"
android:textColor = "@color/Black"
/>
<TextView
android:id = "@+id/tvValueLatitude"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_vertical_margin"
android:gravity = "center"
android:hint = "@string/valueLatitude"
android:textAppearance = "?android:attr/textAppearanceMedium"
android:textColor = "@color/Black"
android:textColorHint = "@color/Gray" />
</LinearLayout>
<LinearLayout
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_horizontal_margin"
android:layout_weight = "1"
android:divider = "?android:dividerVertical"
android:orientation = "vertical"
android:showDividers = "middle">
<TextView
android:id = "@+id/tvLongitude"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:gravity = "center"
android:text = "@string/Longitude"
android:textAppearance = "?android:attr/textAppearanceMedium"
android:textColor = "@color/Black"
/>
<TextView
android:id = "@+id/tvValueLongitude"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginTop = "@dimen/activity_vertical_margin"
android:gravity = "center"
android:hint = "@string/valueLongitude"
android:textAppearance = "?android:attr/textAppearanceMedium"
android:textColor = "@color/Black"
android:textColorHint = "@color/Gray" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Основная деятельность
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
private GoogleMap mMap;
TextView lat,longt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
lat=findViewById(R.id.tvValueLongitude);
longt=findViewById(R.id.tvValueLatitude);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney, Australia, and move the camera.
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
Пока у меня только карта. Любая помощь в кодировании или указание хорошего учебника было бы замечательно, спасибо!
Взгляните на ответ это.
Возможный дубликат Android: перетащите карту, удерживая маркер в центре.
Если я понимаю ваш вопрос, вам нужно:
Глобальная переменная:
private Marker marker;
Поместите маркер запуска в центр экрана:
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnCameraMoveListener(this);
LatLng center = mMap.getCameraPosition().target;
marker = mMap.addMarker(new MarkerOptions().position(mMap.getCameraPosition().target));
}
Измените его положение:
@Override
public void onCameraMove() {
LatLng center = mMap.getCameraPosition().target;
marker.setPosition(center);
}
И onClick, чтобы получить текущую LatLng - LatLng markerPosition = marker.getPosition();
Поместите
SupportMapFragment
в контейнер, поддерживающий упорядочение по оси Z (например,ConstraintLayout
). Поместите маркер в тот же контейнер по центру карты (примечание: это будет намного проще, если у маркера будет «точка» в центре изображения). Теперь, когда пользователь перемещает карту, все, что вам нужно сделать, это получить координаты центра карты, которые вы можете получить сgetCameraPosition()
наGoogleMap
.