uni-app map组件Marker callout和title点击隐藏后仍覆盖原显示区域,导致该区域无法点击
uni-app map组件Marker callout和title点击隐藏后仍覆盖原显示区域,导致该区域无法点击
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | macOS 15.1 | HBuilderX |
iOS | iOS 18 |
示例代码:
[
{
"id": "547758592",
"latitude": 30.335474608699858,
"longitude": 120.12088942579587,
"title": "8600650792398610",
"width": "31",
"height": "38",
"state": 1,
"deviceType": 8,
"callout": {
"bgColor": "#5AC2EB",
"color": "#fff",
"content": "zt001\n8600650792398610",
"display": "BYCLICK",
"fontSize": "14",
"fontWeight": "bold",
"padding": 8,
"textAlign": "center"
},
"iconPath": "/static/img/marker/2x/es_online.png"
},
{
"id": "675096064",
"latitude": 30.335476526174677,
"longitude": 120.12077344608137,
"title": "8600650791660070",
"width": "31",
"height": "38",
"state": 1,
"deviceType": 8,
"callout": {
"bgColor": "#5AC2EB",
"color": "#fff",
"content": "zt002\n8600650791660070",
"display": "BYCLICK",
"fontSize": "14",
"fontWeight": "bold",
"padding": 8,
"textAlign": "center"
},
"iconPath": "/static/img/marker/2x/es_online.png"
}
]
操作步骤:
如描述
预期结果:
如描述
实际结果:
如描述
bug描述:
ios平台,nvue页面,map组件,marker图标被点击时,会显示callout或title,点击其他maker或者空白区域时,callout消失,但发现如果callout显示时遮盖住了其他marker, 即使此callout消失,也会导致原先被覆盖的marker无法被点击.
安卓平台正常,无此问题
4.15版本ios同样有这个问题
更多关于uni-app map组件Marker callout和title点击隐藏后仍覆盖原显示区域,导致该区域无法点击的实战教程也可以访问 https://www.itying.com/category-93-b0.html
无人回答
更多关于uni-app map组件Marker callout和title点击隐藏后仍覆盖原显示区域,导致该区域无法点击的实战教程也可以访问 https://www.itying.com/category-93-b0.html
置顶
在uni-app中,使用map
组件时,如果Marker的callout
和title
在点击隐藏后仍然覆盖原显示区域,这通常是因为相关的样式或事件处理没有正确设置。为了确保Marker的callout
和title
在隐藏后不会阻挡点击事件,你可以尝试以下方式处理。
首先,确保你使用了uni-app
提供的API来正确控制callout
和title
的显示与隐藏。这里是一个基本的示例,展示了如何动态控制Marker
的callout
显示:
<template>
<view>
<map :longitude="longitude" :latitude="latitude" style="width: 100%; height: 300px;">
<marker
v-for="(marker, index) in markers"
:key="index"
:id="marker.id"
:latitude="marker.latitude"
:longitude="marker.longitude"
:callout="{content: marker.name, display: marker.showCallout}"
@tap="onMarkerTap(marker)"
></marker>
</map>
</view>
</template>
<script>
export default {
data() {
return {
longitude: 116.404,
latitude: 39.915,
markers: [
{ id: 1, latitude: 39.915, longitude: 116.404, name: 'Marker 1', showCallout: false },
// 更多marker数据...
]
};
},
methods: {
onMarkerTap(marker) {
// 切换callout显示状态
marker.showCallout = !marker.showCallout;
// 强制重新渲染map组件(如果需要)
this.$forceUpdate();
}
}
};
</script>
在上面的代码中,我们通过marker.showCallout
来控制callout
的显示与隐藏。当用户点击Marker时,onMarkerTap
方法会被触发,切换showCallout
的状态。
如果callout
和title
在隐藏后仍然阻挡点击事件,这可能是由于样式或者渲染层级的问题。你可以尝试以下方法:
-
确保样式正确:检查是否有CSS样式影响了
map
组件或Marker
的渲染层级。 -
使用setTimeout:有时候,由于渲染延迟,你可能需要在切换显示状态后使用
setTimeout
来确保样式更新完成。 -
检查地图组件的bug:确保你使用的
uni-app
版本没有已知的bug影响map
组件。如果有,考虑升级到最新版本或者查找相关的issue和patch。 -
使用覆盖层:如果上述方法都无效,可以考虑使用自定义的覆盖层来模拟
Marker
的行为,这样可以完全控制其显示与隐藏的逻辑和样式。
通过上述方法,你应该能够解决Marker的callout
和title
隐藏后仍覆盖原显示区域的问题。