【问题标题】:Detecting if is zoom-in or zoom-out with leaflet使用传单检测是放大还是缩小
【发布时间】:2016-10-06 20:33:53
【问题描述】:

我如何知道用户何时放大或缩小?如果用户在某个级别后缩放,我想开始动画。触发事件zoomstart时是否可以知道这一点?

【问题讨论】:

  • map.on('zoomstart', function(e) { do something });
  • 但是我怎么知道是放大还是缩小呢?

标签: leaflet


【解决方案1】:

我如何知道用户何时放大或缩小?

在每个zoom 级别,计算map.getZoom() 发生了多少变化。

在zoomstart事件触发的时候能知道吗?

没有。

考虑以下场景:用户,使用触摸屏(手机/平板电脑)。

用户将两根手指放在屏幕上。半帧后,其中一根手指向中心移动了几个像素,触发了缩放级别的微小变化。

您的代码捕获紧接着发生的zoomstartzoom 事件。 “我知道!” - 您的代码显示 - “用户正在缩小!”。

然后用户开始移动他们的手指越来越宽,放大。你的代码会变得混乱。

但是用户改变了主意,然后出于任何原因开始缩小。然后再进去。然后又出去了。然后他们抬起手指,缩放会捕捉到缩放级别。

这就是为什么当您在 Leaflet 中收听 zoomstartzoom 事件时,您可能知道最终的缩放级别。

【讨论】:

  • 好的,每次用户改变方向时触发zoomstart的想法怎么样?
  • 没有。语义很明确:当交互开始更改缩放级别时有一个zoomstart,当交互结束时有一个zoomend
  • 如果你想«如果用户缩放到某个级别后开始动画»,请依赖zoom 事件并在地图缩放更高(而不是“等于或高于”)超过您的阈值。
  • 是否可以在 zoomstart 上取消缩放事件?
  • 我很高兴收到通知以获取当前的缩放值,如果这是一个很好的浮点数。我也会应用“进行中”的缩放级别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2021-08-12
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多