这篇博文 由史蒂夫·芬顿撰写,前几天出现在我的信息流中。 我以前从未听说过 HERE 地图,但显然它们可以像谷歌地图一样嵌入。 问题在于,您可以使用滚轮放大和缩小 HERE 地图。 因此,假设您正在向下滚动页面,您的光标(或手指)最终落在了 HERE 地图上,现在您无法继续向下滚动页面,因为滚动事件被地图捕获并变成了地图缩放。
史蒂夫的解决方案:在窗口上开始滚动事件时,在地图上放置一个“覆盖”<div>
,并在短暂延迟后(滚动“停止”时)将其删除。 这个解决方案与我的想法一致,因为我过去不仅为此类嵌入地图编写过解决方案,而且今天在 CodePen 上也实现了类似的解决方案。 在 CodePen 上,您可以调整“预览”窗口的大小,这是一个包含您编写的代码的 <iframe>
。 如果您拖动得太快,您的鼠标光标(或触摸事件)可能会触发可拖动元素的移动,可能会触发到 <iframe>
本身。 如果发生这种情况,<iframe>
将吞并事件,您尝试执行的调整大小操作将无法正常工作。 为了防止这种情况,我们在您拖动时在 <iframe>
的顶部放置一个“覆盖”的 <div>
,并在您停止拖动时将其删除。
说到地图,它让我想起了布拉德·弗罗斯特在 2012 年记录的 自适应地图 的想法。 这个想法是,在小屏幕移动设备上嵌入地图并不是一个好主意。 空间狭窄,它们会减慢页面加载速度,而且,就像史蒂夫近十年后遇到的那样,它们会干扰用户滚动页面。 布拉德的解决方案是为小屏幕有条件地提供地图的图像(仍然可以使用 API 驱动),并附带一个“查看地图”链接,该链接将用户带到全屏地图体验,可能是在地图的原生应用程序中。 大屏幕仍然可以显示交互式地图,尽管我认为,对于任何技术债务较少的浏览器来说,使用链接到地图服务的图像可能是一个明智的模式。
我已经在我们的 Web 平台中使用了史蒂夫的 HERE 地图修复程序,它非常有效!:)
如果您想知道,HERE 以前是诺基亚地图,后来被一些德国汽车制造商收购。 您会发现它主要为各种品牌的汽车导航系统提供动力(从丰田到雪佛兰再到宝马),而从他们的角度来看,移动/Web 使用只是附带业务。
地图服务提供设置,用于禁用其地图上的滚动事件(HERE 地图也是如此)。 只有地图容器在小触摸屏上尺寸过大才会有问题。 用户可能会陷入地图中,因为在视口中没有可抓取(滚动)的内容。
Sebastian,HERE 地图在最新版本中禁用了滚动事件设置,因此需要一个临时的“修复程序”。
为什么不使用 scrollwheel: false 代替呢?