Реагировать на родные карты mapPadding не работает - PullRequest
0 голосов
/ 01 мая 2018

Я использую fitToSuppliedMarkers() для своих маркеров, и мне нужно добавить некоторые отступы на мою карту. Я попытался реализовать это решение безуспешно. Я не могу использовать fitToCoordinates(), потому что мне нужно создать маркеры в componentDidMount, которые этот метод не поддерживает.

Мой код:

<MapView onMapReady={() => this.mapRef.map.setNativeProps({ padding: 100 })}></MapView>

Этот код выдает «setNativeProps не является функцией». Я также попытался использовать свойство mapPadding, существующее в документах , но безуспешно:

<MapView mapPadding={{top: 20, right: 20, bottom: 20, left: 20}}></MapView>

1 Ответ

0 голосов
/ 01 мая 2018

Я полагаю, что существует проблема с реализацией android-native-maps для Android. Я не уверен, но, похоже, проблема с преобразованием px в dp. Попробуйте это:

const padding = Platform.OS === 'android' 
                   ? PixelRatio.getPixelSizeForLayoutSize(20) 
                   : 20;

const mapPadding = {top: padding, right: padding, bottom: padding, left: padding};

Если это не работает, попробуйте установить отступ на 200 и посмотрите, есть ли разница.


Edit: Это точный код, который я успешно использую:

const iosEdgePadding = { top: 100, right: 50, bottom: 300, left: 50 };

const androidEdgePadding = {
    top: PixelRatio.getPixelSizeForLayoutSize(iosEdgePadding.top),
    right: PixelRatio.getPixelSizeForLayoutSize(iosEdgePadding.right),
    bottom: PixelRatio.getPixelSizeForLayoutSize(iosEdgePadding.bottom),
    left: PixelRatio.getPixelSizeForLayoutSize(iosEdgePadding.left),
}

const edgePadding = (Platform.OS === 'android') ? androidEdgePadding : iosEdgePadding;

this.refs.map.fitToCoordinates([coordinate1, coordinate2], { edgePadding, animated: true })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...