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

Я пишу приложение в android с помощью API Google map-V2. Я хочу перекрыть панель действий так же, как в приложении карты Google. И я включил кнопку "Мое местоположение". Проблема в том, что моя кнопка местоположения находится под панелью действий. Есть ли способ переместить эту кнопку. Я хочу создать приложение, похожее на Карты. Я новичок в 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);

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

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