Реагирует на встроенный инструмент выбора уровня MapView в помещении, работая на iOS, но не Android - PullRequest
0 голосов
/ 26 февраля 2020

При использовании mapView, являющегося частью библиотекиact-native-map, переключатель выбора внутреннего уровня работает на устройствах ios при увеличении масштаба в некоторых зданиях, но не работает на устройствах android.

   <MapView
  style={styles.mapStyle}
  provider="google"
  showsUserLocation={true}
  region={props.region}
  zoomEnabled={true}
  showsIndoorLevelPicker={true}
  showsIndoors={true}
  showsMyLocationButton={true}
/>

Как мне заставить его работать?

1 Ответ

0 голосов
/ 28 февраля 2020

Я обнаружил, что, изменив размер компонента MapView после небольшой задержки, я могу заставить сборщик пола в помещении отображаться на Android. Вот пример с функциональным компонентом.

Тот же принцип применим к компоненту класса, но вместо этого вы должны использовать setState ().

import React, { useState, useEffect } from 'react';
import { StyleSheet, View } from 'react-native';


import MapView, {
  Polygon,
  Polyline,
  LatLng,
} from 'react-native-maps';


export const Overlays = () => {

  const [currentMargin, setCurrentMargin] = useState(1);

  useEffect(() => {
    setTimeout(() => {
      setCurrentMargin(0);
    }, 1000);
  }, []);


  return (
    <View style={styles.container}>
      <MapView
        style={{ marginBottom: currentMargin, ...StyleSheet.absoluteFillObject }}
        showsIndoorLevelPicker={true}
        showsMyLocationButton={true}
        provider={"google"}
        initialRegion={{
          latitude: 45.497284367030844,
          latitudeDelta: 0.0015644580909750516,
          longitude: -73.5790109820664,
          longitudeDelta: 0.0024069473147392273,
        }}
      >
      </MapView>
    </View >
  );

}


const styles = StyleSheet.create({
  container: {
    ...StyleSheet.absoluteFillObject,
    justifyContent: 'flex-end',
    alignItems: 'center',
  },
  map: {
    ...StyleSheet.absoluteFillObject,
  }
});

export default Overlays;

Вот результат! Снимок экрана

Надеюсь, это поможет.

...