有没有办法知道用户是在反应原生地图中放大还是缩小地图?
如何获取缩放级别或更新的纬度增量?
要知道用户何时缩放(或更改区域的任何部分(,您可以添加一个回调来侦听区域更改(onRegionChange(。在回调中,您可以访问新区域的数据:
latitude: number;
longitude: number;
latitudeDelta: number;
longitudeDelta: number;
要确定用户是否缩放,我们只需要查看纬度增量或经度增量,并将其与以前的进行比较。
回调可以实现如下:
在渲染函数中
<MapView
onRegionChange={this.onRegionChange}
/>
在课堂上
onRegionChange = region => {
if(region.latitudeDelta !== this.state.latitudeDelta){
//user zoomed
this.setState({latitudeDelta: region.latitudeDelta});
}
}
每当用户放大或缩小时,longitudeDelta
都会发生变化。 缩放时latitudeDelta
不会更改。
因此,您可以使用onRegionChangeComplete
事件<MapView/>
const _longitudeDelta = useRef<number | null>(null);
//--------------------------------------------------------------------
<MapView
onRegionChange={({ longitudeDelta }) => {
if (longitudeDelta !== _longitudeDelta.current) {
console.log("user zoomed");
_longitudeDelta.current = longitudeDelta;
}
}}
/>