Google지도를로드하는 간단한 앱을 만들고 (airbnb의 반응 네이티브지도 라이브러리 사용) 사용자의 현재 위치를 보여줍니다. . 내가 보는 것은지도가 사용자의 위치가 획득되면 다시 렌더링하는 것이 아니라 항상 기본 초기 위치를 표시한다는 것입니다.지리적 위치가 획득되면 React-Native-Maps가 다시 렌더링되지 않는 것 같습니다.
저는 React 0.42를 사용 중이며 iOS에서만 테스트하고 있습니다. 여기에 몇 가지 코드를 명확히하는 것입니다
1.) 내가 componentDidMount
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
region: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: 0.01,
longitudeDelta: 0.0011
}
});
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}
3) 렌더링으로 내에서 사용자의 위치를 얻을 초기 상태
state = {
region: {
latitude: 52,
longitude: 5,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421
}
}
2
)를 설정, 나는 초기 지역으로지도를 표시하고 사용자 위치가 변경되면 해당 지역이 변경 될 것으로 예상하십시오.render() {
return (
<View style={{ flex: 1 }}>
<View style={{backgroundColor: 'coral', height: 70, justifyContent: 'center', alignItems: 'center'}}>
<Text>
<Text>longitude: {this.state.region.longitude}</Text>
<Text>latitude: {this.state.region.latitude}</Text>
</Text>
</View>
<View style={styles.container}>
<MapView
provider={PROVIDER_GOOGLE}
style={styles.map}
initialRegion={this.state.region}
region={this.state.region}
onRegionChange={this.onRegionChange}
onRegionChangeComplete={this.reloadEntities}
/>
</View>
</View>
);
}
여기에 그냥이
onRegionChange = (region) => {
this.setState({ region });
}
주 재 렌더링의 원인이됩니다 믿고 새로운 지역과 상태를 업데이트의 onRegionChange입니다 : 경도와 위도 텍스트 값은지도 변화의 영역으로 업데이 트를 수행하고 사용자의 위치가 파악되면 업데이트됩니다.
지도가 사용자의 위치가 파악되면 표시되는 내용이 변경되지 않는 이유에 대해 다소 혼란 스럽습니다. 어떤 도움을 많이 주시면 감사하겠습니다!
업데이트 :이 스레드를 살펴 보니 : https://github.com/airbnb/react-native-maps/issues/43 그리고 주로 Android를 중심으로 돌고있는 것 같지만 운이 좋으면 enableHighAccuracy 옵션을 제거하려고했습니다.
다른 설명에서 언급했듯이, 지역 변경이 완료된 후에 콜백 함수를 호출 할 수있는 방법이 있습니까? – Rudy