Подтвердить что ты не робот

Android Maps Library V2 zoom управляет настраиваемой позицией

Как я могу настроить положение встроенных элементов управления увеличением в GoogleMap V2?

Есть много вопросов, связанных с этой темой для версии 1 библиотеки Google Maps.

Размещение элементов управления масштабированием в MapView

Как переместить встроенные элементы управления увеличением в MapView?

Как изменить масштаб управления с помощью setBuiltInZoomControls (true)?

Однако я не смог найти никаких вопросов относительно V2 библиотеки.

В V2 нет метода

(LinearLayout) mapView.getZoomControls();

все предыдущие вопросы становятся устаревшими.

Заранее спасибо

4b9b3361

Ответ 1

В зависимости от того, что вы пытаетесь сделать, вы можете найти GoogleMap.setPadding() полезным (добавлено в сентябре 2013 г.).

map.setPadding(leftPadding, topPadding, rightPadding, bottomPadding);

В документах API:

Этот метод позволяет вам определить видимую область на карте, чтобы сообщить карте, что части карты вокруг краев могут быть затенены, путем установки дополнения на каждом из четырех краев карты. Функции карты будут адаптированы к дополнению. Например, элементы управления масштабированием, компас, уведомления об авторских правах и логотип Google будут перемещены в соответствии с определенной областью, движения камеры будут относиться к центру видимой области и т.д.

Также см. описание того, как работает дополнение в GoogleMap.

Ответ 2

Да, вы можете изменить положение кнопки ZoomControl и MyLocation с небольшим взломом. В моем примере у меня есть SupportMapFragment, который раздувается из макета xml.

Просмотреть идентификаторы для кнопки ZoomControl и MyLocation:

ZoomControl id = 0x1
MyLocation button id = 0x2

Код для обновления положения ZoomControl:

// Find map fragment
SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);

// Find ZoomControl view
View zoomControls = mapFragment.getView().findViewById(0x1);

if (zoomControls != null && zoomControls.getLayoutParams() instanceof RelativeLayout.LayoutParams) {
    // ZoomControl is inside of RelativeLayout
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) zoomControls.getLayoutParams();

    // Align it to - parent top|left
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

    // Update margins, set to 10dp
    final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10,
            getResources().getDisplayMetrics());
    params.setMargins(margin, margin, margin, margin);
}

Ответ 3

AFAIK, нет возможности переместить стандартные элементы управления увеличением. Тем не менее, вы можете скрыть их и иметь свои собственные кнопки масштабирования, где бы вы ни захотели, хотя затем вы будете нести ответственность за настройку масштабирования карты на основе этих щелчков кнопки.

Ответ 4

Только для записи:

Навигационные элементы управления 0x4

Итак, всего:

@LayoutRes final int ZOOM_CONTROL_ID = 0x1;
@LayoutRes final int MY_LOCATION_CONTROL_ID = 0x2;
@LayoutRes final int NAVIGATION_CONTROL_ID = 0x4;