Как переместить мою кнопку местоположения в google mapv2 в android?

Я пишу приложение в android, используя API-интерфейс Google map-V2. Я хочу перекрыть панель действий так же, как в приложении карты Google. И я включил кнопку «Мое местоположение». Проблема в том, что моя кнопка местоположения находится под панелью действий. Есть ли способ переместить эту кнопку. Я хочу сделать приложение, похожее на Карты. Я новичок в android, поэтому, пожалуйста, помогите.

Вы не можете изменить MyLocationButton каким-либо образом, но включите и отключите его. Для этого уже есть запрос .

Не стесняйтесь отключать кнопку и просто реализовать свой собственный.

У вас будет что-то вроде этого:

mMap.getUiSettings().setMyLocationButtonEnabled(false); 

Вы можете установить дополнение к карте.

Это решило проблему – накладывается поверх карты сверху (я использовал 48 провалов, но вы можете наложить панель действия, а затем получить фактическую высоту ( ? Android: attr / actionBarSize ))

 mapFragment.getMap().setPadding(0, dpToPx(48), 0, 0); 

(Функция DP-PX – это ответ SO )

Вы можете легко изменить местоположение своей кнопки местоположения

 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); 

Chage LocationButton Вы также можете установить отступы после настройки выравнивания кнопки местоположения

 mMap.setPadding(0, 0, 30, 105); 

Я решил эту проблему в своем фрагменте карты, переместив мою кнопку местоположения в правый нижний угол обзора, используя код ниже, вот мои Maps 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); } } 

Надеюсь, это решит вашу проблему. Благодарю.

Просто используйте GoogleMap.setPadding (левый, верхний, правый, нижний), который позволяет указать части карты, которые могут быть скрыты другими видами. Настройка дополнения изменяет стандартные элементы управления картой, а обновления камеры будут использовать дополненную область.

https://developers.google.com/maps/documentation/android/map#map_padding

Вместо решений 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);