在没有用户输入的情况下反应本地地图的移动

时间:2018-11-01 11:35:58

标签: android react-native react-native-maps

这是我的MapView代码,

        <MapView
      style={styles.map}
      initialRegion={
        this.state.region 
      }
      region={this.state.region}
      onRegionChangeComplete={this.onRegionChange}
      showsMyLocationButton
      showsCompass
      showsUserLocation 
      zoomControlEnabled 
      loadingEnabled
      onMapReady={this.state.placesread ? this.getBreakfast : null}
    >
      {marker}
    </MapView>

我的问题是,当用户移动地图位置时,地图开始随机移动而不停止,并且不关闭地图窗口就无法停止。

当地图加载后,我会在地图上获得标记并加载,并且类似于google地图,我在地图上搜索了该区域按钮,因此我正在使用onRegionChangeComplete存储要声明的新区域。

我的onRegionChangeComplete代码是

  onRegionChange = async region => {
await this.setState({ region });
await this.setState({ regionChange: true });

};

1 个答案:

答案 0 :(得分:1)

我想问题是您正在使用onRegionChangeComplete回调存储要声明的新区域。即this.state.region。并将该region道具传递给MapView组件。

尝试从region={this.state.region}组件中删除MapView

更新

awaitsetState一起使用的另一件事是完全多余的(await this.setState({ region })),因为setSate不会返回promise而是undefined

setState是异步功能。如果您想等待它,您可以做的是将其放入Promise,并在callback / second参数中进行解析。

例如,每当您希望setState像这样的同步调用promisedSetState时。

promisedSetState = (newState) => new Promise((resolve) => {
        this.setState(newState, () => {
            resolve();
        });
});
//await the promise to get resolved
await promisedSetState({newState: 'whatever it is'});