在RegionChange之后映射回到先前的位置



我正在使用Expo MapView,当我尝试更改OnRegionChange中指示区域的值时,地图返回到先前的位置。如何解决此问题?

import React from 'react';
    import { Text, View, TouchableOpacity } from 'react-native';
    import { Camera, Permissions } from 'expo';
    import {
      Location,
      MapView,
      Marker
    } from 'expo';
    export default class App extends React.Component {
      state= {
          region: {
            latitude: 37.78825,
            longitude: -122.4324,
            latitudeDelta: 0.0922,
            longitudeDelta: 0.0421,
          },
      }
      render() {
        return (
          <MapView
            style={{ flex: 1, height: '100%', width: '100%', zIndex: 0 }}
            onRegionChange={(region) =>this.setState({ region: region })}
            region={this.state.region}
          />
        );
      }
    }

它是因为您将传递给 onRegionChange中的区域道具的状态设置为

setState花费时间来设置值和重新渲染组件。

onRegionChange之间至少称为5-10次。

因此再次5-10 setState,所以它变得懒惰。

如果要存储当前区域,则只使用region以外的其他状态。

edit :实际使用状态也可能是合适的

因此您可以使用普通变量而不是状态。

我解决了:

 onRegionChangeComplete={(region) => props.map.animateToRegion(region, 0)}

相关内容

  • 没有找到相关文章