首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react native - react-native-maps initialRegion不工作

react native - react-native-maps initialRegion不工作
EN

Stack Overflow用户
提问于 2017-10-25 13:09:54
回答 1查看 1.6K关注 0票数 0

我使用react-native-maps为iOS设备集成了谷歌地图。我有一个问题,在我重新渲染贴图后,initialRegion不工作。

我的应用程序只包含两个组件:来自react-native-mapsMapView和一个Button。单击该按钮可显示或隐藏地图。

下面是我的代码:

代码语言:javascript
复制
render() {
    return (
        <View style={styles.mapContainer}>
            {this.renderMap()}
            <TouchableOpacity
                onPress={this.onButtonPress.bind(this)}
                style={styles.showMapButtonContainer}>
                <Text style={styles.showMapButtonText}>Show and Hide Map</Text>
            </TouchableOpacity>
        </View>
    );
}

renderMap() {
    if (this.state.showMap) {
        return (
            <MapView
                provider={PROVIDER_GOOGLE}
                style={styles.map}
                initialRegion={{
                    latitude: 37.78825,
                    longitude: -122.4324,
                    latitudeDelta: LATITUDE_DELTA,
                    longitudeDelta: LONGITUDE_DELTA,
                }}
                cacheEnabled={true}
                onRegionChangeComplete={this.onRegionChangeComplete.bind(this)}
            >
            </MapView>
        );
    } else {
        return <View style={styles.map}/>;
    }
}

onButtonPress() {
    this.setState({
        showMap: !this.state.showMap,
    })
}

onRegionChangeComplete(region) {
    console.log("new region", region)
}

第一次加载映射,一切都工作得很好。但是,当我隐藏地图并通过单击按钮再次显示它时,它会呈现一个随机区域:

代码语言:javascript
复制
{ 
  longitude: 0,
  latitudeDelta: 0.0004935264587338631,
  latitude: 0,
  longitudeDelta: 0.00027760863304138184 
}

我尝试了truefalse一样的方法,但是没有帮助。如果你有什么建议,请告诉我。提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2017-10-25 14:39:25

当您第一次加载页面时,它将调用initialRegion,而当您隐藏显示地图时,它将不会再次调用initialRegion函数,因为地图以前已经加载过,因此您需要调用隐藏/显示方法上的函数,并通过以下方法设置initialRegion

代码语言:javascript
复制
this.map.setNativeProps({ region });

代码语言:javascript
复制
this.map.animateToRegion({
       latitude: this.props.latitude,
       longitude: this.props.longitude,
       longitudeDelta: LONGITUDE_DELTA ,
       latitudeDelta: LATITUDE_DELTA
}, 1)}

您需要如下所示添加ref={ref => { this.map = ref; } },以便在函数中获得this.map作为引用

代码语言:javascript
复制
         <MapView                   
                ref={ref => { this.map = ref; } }                 
                initialRegion={{
                  latitude: 37.78825,
                  longitude: -122.4324,
                  latitudeDelta: LATITUDE_DELTA,
                  longitudeDelta: LONGITUDE_DELTA,
                }}
                 onRegionChangeComplete={(region) => { **somefuncation** } }            
          >
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46924415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档