uni-app IOS15 支付宝小程序 地图组件上有遮挡物时 无法操作地图
uni-app IOS15 支付宝小程序 地图组件上有遮挡物时 无法操作地图
操作步骤:
场景一: 地图上层用定位放了三个控件, 地图无法拖拽无法缩放。 去掉这个三个控件,就可以操作。
场景二: 地图上不显示控件,判断到某一区域后才去显示这三个控件, 地图到达区域前可以操作,地图到达区域后显示了三个控件,地图不可操作。
预期结果:
地图可以操作
实际结果:
有遮挡物时,地图不能操作
bug描述:
支付宝小程序地图上有遮挡物时,无法操作地图。 安卓及ios15以下手机正常。

更多关于uni-app IOS15 支付宝小程序 地图组件上有遮挡物时 无法操作地图的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【解决方法】使用小程序基础库2.0构建就可以了
更多关于uni-app IOS15 支付宝小程序 地图组件上有遮挡物时 无法操作地图的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我勾选了2.0库 还是不行啊
在 iOS 15 的支付宝小程序环境中,地图组件(map)与上层覆盖的控件(如 view)确实可能出现事件穿透问题,导致地图无法响应拖拽和缩放操作。这通常是由于 iOS 15 的 WebKit 引擎对事件处理机制的调整,影响了小程序的渲染层与原生地图之间的交互。
问题原因:
在 iOS 15 中,当 map 组件上方存在其他控件(即使控件是透明的或仅用于布局)时,这些控件可能会“拦截”触摸事件,阻止事件传递到底层的地图组件。这与安卓或旧版 iOS 不同,后者通常允许事件穿透到地图。
解决方案:
-
调整控件样式:
为覆盖在地图上的控件添加 CSS 属性pointer-events: none。这允许触摸事件直接穿透控件,到达地图组件。例如:.overlay { pointer-events: none; }如果控件需要交互(如按钮),可在子元素上单独设置
pointer-events: auto。 -
动态控制事件穿透:
在场景二中,当需要显示控件时,可通过动态类或样式绑定,在显示控件的同时启用pointer-events: none。例如:<view :class="{'overlay': isInRegion}" [@tap](/user/tap)="handleControl"> <!-- 控件内容 --> </view>

