64 lines
1.4 KiB
JavaScript
Raw Normal View History

import { ref } from 'vue'
/**
* 地图 Tooltip 状态管理
* 用于显示地图标记点的轻量级信息提示框
*/
export function useMapTooltip() {
// Tooltip 状态
const tooltipState = ref({
visible: false,
x: 0,
y: 0,
title: '',
icon: '',
zIndex: 20,
data: null // 业务数据,用于内容插槽渲染
})
/**
* 显示 Tooltip
* @param {Object} options - Tooltip 配置选项
* @param {number} options.x - 屏幕 X 坐标像素
* @param {number} options.y - 屏幕 Y 坐标像素
* @param {string} [options.title=''] - Tooltip 标题文本
* @param {string} [options.icon=''] - 标题左侧图标的图片路径
* @param {Object} [options.data=null] - 业务数据
*/
const showTooltip = ({ x, y, title = '', icon = '', data = null }) => {
tooltipState.value = {
visible: true,
x,
y,
title,
icon,
zIndex: 20,
data
}
}
/**
* 隐藏 Tooltip
*/
const hideTooltip = () => {
tooltipState.value.visible = false
}
/**
* 更新 Tooltip 位置
* @param {number} x - 屏幕 X 坐标
* @param {number} y - 屏幕 Y 坐标
*/
const updateTooltipPosition = (x, y) => {
tooltipState.value.x = x
tooltipState.value.y = y
}
return {
tooltipState,
showTooltip,
hideTooltip,
updateTooltipPosition
}
}