我正在使用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}
/>
);
}
}
答案 0 :(得分:2)
这是因为您正在设置要传递给onRegionChange
中区域道具的状态,
setState
花时间设置值并重新渲染组件。
在onRegionChange
之间被称为至少5-10次。
再次从5到10 setState
,所以它变得迟钝了。
如果要存储当前区域,则只需使用region
以外的其他状态。
编辑:实际上,使用状态也可能会拖延,因为毕竟它又在做所有的工作,但现在只是更改了名称。
因此,您可以使用普通变量而不是状态。
答案 1 :(得分:1)
我解决了:
onRegionChangeComplete={(region) => props.map.animateToRegion(region, 0)}