Я лично сталкивался с этим и обнаружил, что это в основном проблема макета на iOS. Значения атрибутов height
и width
, предоставляемые XML-элементу MapView, обрабатываются iOS по-разному. Решением нашей проблемы, как описано в самом вопросе, является resizing
карта во время выполнения (поскольку поворот экрана заставляет ее проходить процедуру изменения размера). Применение этой абсурдной логики в начале рендера карты решает проблему.
Вот как я это сделал:
Укажите значение width
MapView в XML:
<maps:mapView width="100%" mapReady="onMapReady" />
и установите height
карты в методе onMapReady
с задержкой в 100 миллисекунд.
/* if you want to set height in DIP */
setTimeout(() => this.mapView.height = 500, 100);
или если вы хотите установить высоту в процентах
/* [0.85 means 85% here] */
setTimeout(() => this.mapView.height = {
unit: '%',
value: 0.85
}, 100);
Задержка
100 миллисекунд заставляет его пройти через эффект resize
. Протестировано на iOS 12.1