私はMapViewを持っており、ユーザーの現在地に焦点を当てようとしています。今私は、位置をログに記録し、currentRegion状態を記録しています。私の問題は、コンポーネントがログに空の配列を表示していることです。レンダリングを繰り返すと、状態が位置座標として設定されるため、MapViewは海の真ん中に私を見せてくれます。なぜinitialRegionは変更された状態とレンダリングを取得していないのですか?React MapViewコンポーネントのstateとinitialRegionにネイティブの問題があります
const screen = Dimensions.get('window');
const ASPECT_RATIO = screen.width/screen.height;
var LATITUDE_DELTA = 0.3022;
var LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO;
class MapScreen extends Component {
constructor(props) {
super(props)
this.state = {
currentRegion: []
}
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position)
this.setState({ currentRegion: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}})
},
(error) => alert(error.message),
{timeout: 20000, maximumAge: 1000}
)
}
render() {
console.log(this.state.currentRegion)
return(
<View style={styles.container}>
<MapView
showsUserLocation = {true}
style={styles.map}
initialRegion={this.state.currentRegion}
/>
</View>
)
}
}