Высота карты в зависимости от ширины экрана с уровнем масштабирования 0 - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь вычислить и установить программно высоту вида карты Google, чтобы она была точной высотой показанного содержимого карты. Я использую уровень масштабирования 0, потому что хочу представить весь мир.

Проблема в том, что я не могу найти фактическую высоту содержимого карты, учитывая, что ширина ограничена родительской шириной ( = экран устройства). Я предпочитаю вырезать карту сверху + снизу или получаю большой отступ сверху + снизу. См. Снимки ниже.

Я знаю, что согласно Документам Google ширина при уровне масштабирования 0 будет 256dp (256 * 2 ^ N dp, где N - уровень масштабирования). Однако мне нужна ширина, чтобы соответствовать размеру экрана устройства, и нет документации о соотношении высоты / размерах.

Получение измеренных размеров просто:

int width = mMapView.getMeasuredWidth();
int height = mMapView.getMeasuredHeight();

Я могу рассчитать уровень масштабирования, основанный на ширине экрана:

float zoom = (float) (Math.log(width / 256.0) / Math.log(2));

Однако я снова не знаю, какая будет правильная высота, чтобы показать весь мир.

Если я установлю android : layout_height = "wrap_content", он заботится только о lo go, поэтому я получаю квадратную карту с ~ 138px, которая не имеет никакого смысла. Это мой xml для вида карты:

    <com.google.android.gms.maps.MapView
        android:id="@+id/map"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:liteMode="true"
        map:cameraZoom="0" />

Кто-нибудь знает, как рассчитать высоту содержимого карты на основе ширины экрана?

google map with unneeded padding

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...