Неправильный центр карты в iOS с использованием nativescript-google-maps-sdk

В iOS, когда я помещаю маркер и местоположение mapView, карта не отображается по центру, но если переместить телефон в горизонтальное положение и снова повернуть, чтобы установить портрет, центр карты будет отображаться нормально. В Adnroid работает отлично.

Вы можете получить больше информации в этом выпуске github: https://github.com/dapriett/nativescript-google-maps-sdk/issues/322

1 ответ

Решение

Я лично столкнулся с этим и обнаружил, что это в основном проблема с версткой на 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