如何知道用户何时在反应原生地图中放大/缩小地图?



有没有办法知道用户是在反应原生地图中放大还是缩小地图?

如何获取缩放级别或更新的纬度增量?

要知道用户何时缩放(或更改区域的任何部分(,您可以添加一个回调来侦听区域更改(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;
}
}}
/>

最新更新