Обновление позиции маркера на реактивных картах и ​​сохранение текущего региона - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть один MapView и один маркер.Я асинхронно запрашиваю текущую позицию пользователя и устанавливаю регион p на карту.Каждые 10 секунд я обновляю позицию маркета.Это делает регион для сброса в положение р.Чтобы избежать этого, я реализовал onRigionChange, чтобы при обновлении состояния рынка последний регион сохранялся.Это работает, но делает навигацию на карте очень глючной.Прокрутка и изменение региона на карте не работают должным образом.Может ли случиться так, что существует мертвая блокировка, вызванная обменом регионами и поддержкой региона?У вас есть идея, как решить проблему?

  componentDidMount() {
    this._getLocationAsync();
  }

  _getLocationAsync = async () => {
    let { status } = await Permissions.askAsync(Permissions.LOCATION);
    if (status !== 'granted') {
      this.setState({
        errorMessage: 'Permission to access location was denied',
      });
    }
    let location = await Location.getCurrentPositionAsync({});
    this.setState({ location });
    this.setState({
          region: {
            latitude: location.coords.latitude,
            longitude: location.coords.longitude,
            latitudeDelta: 0.003,
            longitudeDelta: 0.003,
          },
        });
      }



state = {
    location: null,
    region:null,
    errorMessage: null,
    marker: {latitude: 0,longitude: 0},
  };

      <MapView style={styles.map}
       showsUserLocation = {true}
       onRegionChange={this.onRegionChange.bind(this)}
       region={this.state.region} >
       <MapView.Marker
       coordinate={this.state.marker}
       title={"title"}
       description={"description"}/>
       </MapView>
...