Я пытаюсь вычислить и установить программно высоту вида карты 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" />
Кто-нибудь знает, как рассчитать высоту содержимого карты на основе ширины экрана?