当我没有结束捏地图时会调用此方法,有办法解决这个问题吗?
这是代码
<MapView
style={{flex:1}}
region={{
latitude: parseFloat(this.state.initialPosition.coords.latitude),
longitude: parseFloat(this.state.initialPosition.coords.longitude),
latitudeDelta,
longitudeDelta,
}}
showsUserLocation={true}
onRegionChangeComplete={(region) => {
console.log('onRegionChangeComplete called!');
}}
/>
使用
initialRegion
代替区域,效果会很好。
实际上,当您同时使用区域和 onRegionChangeComplete
时,onRegionChangeComplete
会充当 callback
并在每次区域更改时触发,从而再次更改区域。这样,就进入了无限循环。
更好地将 initialRegion
与 onRegionChangeComplete
一起使用。
我只是通过设置超时来解决它!这是方法
<MapView
style={{flex:1}}
showsUserLocation={true}
onRegionChange={(region) => {
if(this.timeout){
clearTimeout(this.timeout);
}
this.timeout = setTimeout(() => {
this.getDoctorsByGeolocation(region);
},1000);
}}
/>
我希望这可以帮助任何人!
我只是通过 setTimeout 来解决它!这是我的代码:
const allowChangeRegion = React.useRef(false);
React.useEffect(() => {
const timeout = setTimeout(() => {
console.log('set allowRegion = true');
allowChangeRegion.current = true;
}, 2000);
return () => {
if (timeout) {
clearTimeout(timeout);
console.log('set allowRegion = false');
allowChangeRegion.current = false;
}
};
}, []);
<MapView
provider="google"
style={styles.map}
mapType="standard"
showsIndoorLevelPicker
showsUserLocation
showsMyLocationButton
region={props.region}
onRegionChangeComplete={(region, detail) => {
if (allowChangeRegion.current || detail.isGesture) {
props.onChangeRegion(region);
}
}}>
{}
</MapView>
希望可以帮助到大家!