все. Я создаю собственное приложение для отображения другого местоположения в представлениях карт в зависимости от выбранного средства выбора.
Я думал об использовании условного оператора, обнаруживая слова, содержащиеся в строке, я использую библиотеку string-contains
, чтобы обнаружить некоторые слова в строке. Вот пример моего кода:
export default class App extends React.Component {
renderMap(){
if(contains(this.state.name, "Branch 1")){
return <MapView
initialRegion={{
latitude: 53.433980,
longitude: -2.950960,
longitudeDelta: 0.0922,
latitudeDelta: 0.0421,
}}
style={{height: 200, width: 200, padding: 10, flex: 3, justifyContent: 'space-around'}}
><MapView.Marker
coordinate={{
latitude: 37.78825,
longitude: -122.4324,
}}
/></MapView>;
} else if(contains(this.state.name, "Branch 2")){
return <MapView
initialRegion={{
latitude: 51.491610,
longitude: -0.135560,
longitudeDelta: 0.0922,
latitudeDelta: 0.0421,
}}
style={{height: 200, width: 200, padding: 10, flex: 3, justifyContent: 'space-around'}}
><MapView.Marker
coordinate={{
latitude: 37.78825,
longitude: -122.4324,
}}
/></MapView>;
}
else if(contains(this.state.name, "Branch 3")){
return <MapView
initialRegion={{
latitude: 53.461220,
longitude: -2.269540,
longitudeDelta: 0.0922,
latitudeDelta: 0.0421,
}}
style={{height: 200, width: 200, padding: 10, flex: 3, justifyContent: 'space-around'}}
><MapView.Marker
coordinate={{
latitude: 37.78825,
longitude: -122.4324,
}}
/></MapView>;
}
else if(contains(this.state.name, "Branch 4")){
return <MapView
initialRegion={{
latitude: 51.262290,
longitude: -1.081610,
longitudeDelta: 0.0922,
latitudeDelta: 0.0421,
}}
style={{height: 200, width: 200, padding: 10, flex: 3, justifyContent: 'space-around'}}
><MapView.Marker
coordinate={{
latitude: 37.78825,
longitude: -122.4324,
}}
/></MapView>;
}
}
render(){
const branchesPicker = this.state.branches.map((item, branch_id)=> {
return(
<Picker.Item
label={item.name}
value={item.address}
key={item.branch_id}/>
)
});
this.renderMap();
return(
<View style={styles.container}>
<Picker
selectedValue={this.state.name}
mode="dropdown"
style={{ height: 50, justifyContent: 'center', flex:4, alignItems: 'stretch', }}
onValueChange={(item)=> this.setState({name: item})}>
{branchesPicker}
</Picker>
{this.renderMap()}
</View>
Когда я запускаю этот код, средство выбора работает нормально, но когда я пытался изменить средство выбора, карта не меняется, как я предполагал. Он показывает только статический вид одной карты (но вид карты не всегда из ветви 1, иногда он показывает ветку 2 или 3, когда я перезагружаю его. Но дело в том, что он не меняется ..)
fyi, this.state.name
показывает название ветки выбранного сборщика.
Большое спасибо за вашу помощь! Это действительно много значит ..