Реагируйте на собственные карты, чтобы перейти к изменению координат - PullRequest
0 голосов
/ 06 марта 2020

В моем приложении у меня есть карта 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 });
}

Это успешно меняет положение маркера карты.

Моя проблема в том, что карта не перемещается в выбранную позицию. Как мне этого добиться?

1 Ответ

1 голос
/ 06 марта 2020

Создайте ссылку для вашей карты

const mapRef = React.createRef();

Передайте ссылку на карту

<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
  })
}
...