React native maps move 坐标变化

React native maps move to coordinate change

在我的应用程序中,我有 google 地图。它的实现如下。

<MapView style={[styles.mapStyle, { flex: 1, width: this.state.mapWidth }]}
                            initialRegion={{
                                latitude: this.state.latitude,
                                longitude: this.state.longitude,
                                latitudeDelta: 0.1,
                                longitudeDelta: 0.1,
                            }}
                            provider={PROVIDER_GOOGLE}
                            onPress={this.onMapPress.bind(this)}
                            showsUserLocation={true}
                            followsUserLocation={true}
                            showsMyLocationButton={true}
                            showsCompass={true}
                            showsTraffic={true}
                            toolbarEnabled={true}
                            onMapReady={() => this.setState({ width: width - 1 })}
                        >
                            <Marker draggable
                                coordinate={{
                                    latitude: this.state.latitude,
                                    longitude: this.state.longitude,
                                }}
                                onDragEnd={(e) => this.setState({ x: e.nativeEvent.coordinate })}
                            />
                            <Circle
                                center={{
                                    latitude: this.state.latitude,
                                    longitude: this.state.longitude,
                                }}
                                radius={this.state.radius}
                                fillColor='rgba(253, 48, 4,0.5)'
                                strokeColor='rgba(253, 48, 4,1)'
                            />
   </MapView>

当我点击一个按钮时,我改变了地图区域的状态值。

changeRegion(){
    this.setState({ latitude: 6.86, longitude: 6.86 });
}

这成功改变了地图标记的位置。

我的问题是,地图没有移动到选定的位置。我怎样才能做到这一点?

为您的地图创建一个参考[​​=13=]

const mapRef = React.createRef();

将 ref 传递给您的地图

<Map
  ref={mapRef}
  // Rest of your props
/>

修改你的函数

changeRegion(){
  const latitude = 6.86;
  const longitude = 6.86;
  this.setState({ latitude, longitude });
  mapRef.current.animateToRegion({
    latitude,
    longitude,
    latitudeDelta: 0.1,
    longitudeDelta: 0.1
  })
}

根据@Dan 的回答,如果该答案不适合您,请稍作修改:

changeRegion(){
  const targetLatitude = 6.86;
  const targetLongitude = 6.86;
  this.setState({ latitude, longitude });

  mapRef.current.animateToRegion({
    latitude: targetLatitude,
    longitude: targetLongitude,
    latitudeDelta: 0.1,
    longitudeDelta: 0.1
  })
}