uniapp h5 map组件 marker的callout 不会关闭之前点击的callout
时间: 2024-09-24 07:22:59 浏览: 49
在 UniApp 的 H5 地图组件中,Marker 的 callout(信息窗格)有时可能会遇到这样的问题:当你在一个 Marker 上点击并显示 callout 后,如果再次点击其他 Marker,之前的 callout 并不会自动关闭。这可能是由于组件的行为设置或者默认事件处理机制导致的。
解决这个问题通常需要自定义组件的事件处理,例如在 click 事件中添加额外的逻辑来关闭当前的 callout 然后再打开新的。你可以尝试这样做:
1. 首先,获取当前 marker 和其对应的 callout 对象。
```javascript
const currentMarker = getCurrentMarker();
const currentCallout = currentMarker.callout;
```
2. 当点击其他 marker 时,在 click 事件中检查是否需要关闭旧的 callout,并关闭它。
```javascript
map.on('click', function(e) {
if (e.marker !== currentMarker) {
if (currentCallout && currentCallout.isOpened) {
currentCallout.close();
}
// ...然后打开新 marker 的 callout
}
});
```
如果你在项目中找不到合适的事件去触发这个关闭动作,还可以考虑在 `onShow` 或 `onHide` 事件中手动处理 callout 的开关。
阅读全文