在onRegionChange之后映射回上一个位置

时间:2019-02-21 23:09:55

标签: react-native expo react-native-maps

我正在使用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}
          />
        );
      }
    }

2 个答案:

答案 0 :(得分:2)

这是因为您正在设置要传递给onRegionChange中区域道具的状态,

setState花时间设置值并重新渲染组件。

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

再次从5到10 setState,所以它变得迟钝了。

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

编辑:实际上,使用状态也可能会拖延,因为毕竟它又在做所有的工作,但现在只是更改了名称。

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

答案 1 :(得分:1)

我解决了:

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