Я пишу приложение в android с помощью API Google map-V2. Я хочу перекрыть панель действий так же, как в приложении карты Google. И я включил кнопку "Мое местоположение". Проблема в том, что моя кнопка местоположения находится под панелью действий. Есть ли способ переместить эту кнопку. Я хочу создать приложение, похожее на Карты. Я новичок в android, поэтому, пожалуйста, помогите.
Как переместить позицию моего местоположения в google mapv2 в android?
Ответ 1
Вы не можете изменить MyLocationButton каким-либо образом, но включите и отключите его. Для этого уже существует запрос.
Не стесняйтесь отключить кнопку и просто реализуйте свой собственный.
У вас будет что-то вроде этого:
mMap.getUiSettings().setMyLocationButtonEnabled(false);
Ответ 2
Вы можете установить padding на карту.
Это решило проблему - накладывается поверх карты сверху (я использовал 48 провалов, но вы можете наложить панель действия, а затем получить фактическую высоту (? android: attr/actionBarSize))
mapFragment.getMap().setPadding(0, dpToPx(48), 0, 0);
(функция DP to PX от этого SO-ответа)
Ответ 3
Вы можете легко изменить местоположение своей кнопки местоположения
View plusMinusButton = suppormanagerObj.getView().findViewById(1);
View locationButton = suppormanagerObj.getView().findViewById(2);
// and next place it, for exemple, on bottom right (as Google Maps app)
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
// position on right bottom
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
вы также можете настроить заполнение после установки выравнивания кнопки местоположения
mMap.setPadding(0, 0, 30, 105);
Ответ 4
Я решил эту проблему в своем фрагменте карты, переместив мою кнопку местоположения в правый нижний угол обзора, используя код ниже, вот мои карты Activity.java: -
добавьте эти строки кода в метод onCreate(),
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapView = mapFragment.getView();
mapFragment.getMapAsync(this);
и вот код onMapReady(): -
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
// Add a marker in Sydney 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));
if (mapView != null &&
mapView.findViewById(Integer.parseInt("1")) != null) {
// Get the button view
View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
// and next place it, on bottom right (as Google Maps app)
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
locationButton.getLayoutParams();
// position on right bottom
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
layoutParams.setMargins(0, 0, 30, 30);
}
}
Надеюсь, это решит вашу проблему. Спасибо.
Ответ 5
Просто используйте GoogleMap.setPadding(левый, верхний, правый, нижний), который позволяет указать части карты, которые могут быть скрыты другими видами. Настройка дополнений переупорядочивает стандартные элементы управления картой, а обновления камеры будут использовать дополненную область.
https://developers.google.com/maps/documentation/android/map#map_padding
Ответ 6
Вместо решений findViewById я использовал findViewWithTag, чтобы получить ссылку на кнопку. Использование строки показалось мне более читабельным и надежным.
View myLocationButton = mMap.findViewWithTag("GoogleMapMyLocationButton");
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) myLocationButton.getLayoutParams();
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);