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

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

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


comment
Вы пытались установить широту и долготу в событии mapReady?   -  person Manoj    schedule 16.01.2019
comment
Да, позиционирование работает, но с небольшим смещением   -  person mneu    schedule 16.01.2019


Ответы (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

person saibbyweb    schedule 30.01.2019