如何在react-native-maps中检测用户何时缩放地图?

4

有没有办法知道用户在react-native-maps地图上放大或缩小?

如何获取缩放级别或更新后的latitudeDelta?

2个回答

2

如果想要知道用户何时缩放(或改变区域的任何部分),可以添加一个回调函数来监听区域的变化(onRegionChange)。在回调函数中,您可以访问新区域的数据:

最初的回答:

为了知道用户何时缩放(或更改区域的任何一部分),您可以添加一个回调函数来监听区域的更改(onRegionChange)。在回调函数中,您可以访问新区域的数据:

latitude: number;
longitude: number;
latitudeDelta: number;
longitudeDelta: number;

要查找用户是否缩放,我们只需要查看latitudeDelta或longitudeDelta并将其与先前的值进行比较。

回调函数可以实现如下:

在render函数中

Original Answer翻译成"最初的回答"

  <MapView
    onRegionChange={this.onRegionChange}
  />

最初的回答
在这个班级里
  onRegionChange = region => {
    if(region.latitudeDelta !== this.state.latitudeDelta){
      //user zoomed
      this.setState({latitudeDelta: region.latitudeDelta});
    }
  }

每当用户放大或缩小时,longitudeDelta 会发生变化。latitudeDelta 在缩放时不会改变。 - ashuvssut

0
每当用户缩放时,longitudeDelta 会发生变化,但是 latitudeDelta 在缩放时不会改变。

因此,您可以使用 <MapView/>onRegionChangeComplete 事件。


const _longitudeDelta = useRef<number | null>(null);

//--------------------------------------------------------------------
<MapView
  onRegionChange={({ longitudeDelta }) => {
    if (longitudeDelta !== _longitudeDelta.current) {
      console.log("user zoomed");
      _longitudeDelta.current = longitudeDelta;
    }
  }}
/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接