interface TagConfig<C> {
    _isMerged?: boolean;
    clickable?: boolean;
    initialData?: PartialObjectDeep<ContentTypeMap[C]> & {
        important?: boolean;
    };
    initialState?: {
        unfolded?: boolean;
        visible?: boolean;
    };
    modelConfig?: {
        autoLookAtEnabled?: boolean;
    };
    popoverConfig?: {
        autoPlacementBaseSpace?: {
            bottom?: number;
            right?: number;
            top?: number;
        };
        beforeOpen?: ((tag?: TagInstance) => boolean);
        debug?: boolean;
        enabled?: boolean;
        imageURLTransform?: ((url: string, options: {
            height: number;
            width: number;
        }) => string);
        placement?: TagPlacement;
        theme?: "light" | "dark";
        toolbar?: {
            showMore?: boolean;
            showShare?: boolean;
        };
        transitionDuration?: number;
        trigger?: "click" | "hover";
        triggerDelay?: number;
        viewMoreText?: string;
        zIndex?: number;
    };
    renderType?: "Mesh" | "Dom";
    simulate3D?: boolean;
    tag3DConfig?: {
        autoRender?: boolean;
        container?: HTMLElement;
        devicePixelRatio?: number;
        dpr?: number;
        pointerEvents?: "auto" | "none";
        ratio?: number;
        wrapperStyle?: Partial<CSSStyleDeclaration>;
    } & ({
        mode?: "front";
    } | {
        behindFiveContainer?: HTMLElement;
        mode: "behind";
    });
    unfoldedConfig?: ConfigFunction | {
        autoFoldWhenHide?: false;
        autoUnfold?:
            | false
            | {
                autoUnfoldProjectX?: MinMax;
                enable?: boolean;
                strategy?: "ScreenPostion";
            }
            | {
                distance?: MinMax;
                enable?: boolean;
                maxNumber?: number;
                strategy?: "MinimumDistance";
            }
            | {
                enable?: boolean;
                strategy?: "FoldWhenMove";
            };
        disableFold?: true;
        disableUnfold?: true;
        keep?: "folded" | "unfolded";
        unfoldDistance?: MinMax;
    };
    visibleConfig?: {
        alwaysShowWhenMovePano?: boolean;
        angleRange?: MinMax;
        entryFromModel?: boolean;
        followModelVisibility?: boolean;
        intersectRaycaster?: boolean | {
            checkPoints?: Vector3[] | "center" | "corner";
            distanceAccuracy?: number;
            enabled?: boolean;
            needPassed?: number;
        };
        keep?: "hidden" | "visible";
        visibleDistance?: MinMax | "unLimited";
        visibleFiveMode?: TagVisibleMode | ((tag: TagInstance) => TagVisibleMode);
        visiblePanoIndex?: number[] | "all" | "current";
    } | ConfigFunction;
}

Type Parameters

Properties

_isMerged?: boolean

private property

clickable?: boolean

是否可以点击

true
initialData?: PartialObjectDeep<ContentTypeMap[C]> & {
    important?: boolean;
}

Type declaration

  • Optionalimportant?: boolean

    类似 css 的 !important,会覆盖掉 tag.data 中对应的数据

     if (initialData.important) {
    tag.data = ObjectAssignDeep(tag.data, initialData)
    } else {
    tag.data = ObjectAssignDeep(initialData, tag.data)
    }

标签的默认数据,会将 tag.data 深度合并进来

tag.data = ObjectAssignDeep(initialData, tag.data)

initialState?: {
    unfolded?: boolean;
    visible?: boolean;
}

初始状态

Type declaration

  • Optionalunfolded?: boolean

    展开状态

  • Optionalvisible?: boolean

    展示状态

modelConfig?: {
    autoLookAtEnabled?: boolean;
}
popoverConfig?: {
    autoPlacementBaseSpace?: {
        bottom?: number;
        right?: number;
        top?: number;
    };
    beforeOpen?: ((tag?: TagInstance) => boolean);
    debug?: boolean;
    enabled?: boolean;
    imageURLTransform?: ((url: string, options: {
        height: number;
        width: number;
    }) => string);
    placement?: TagPlacement;
    theme?: "light" | "dark";
    toolbar?: {
        showMore?: boolean;
        showShare?: boolean;
    };
    transitionDuration?: number;
    trigger?: "click" | "hover";
    triggerDelay?: number;
    viewMoreText?: string;
    zIndex?: number;
}

Type declaration

  • OptionalautoPlacementBaseSpace?: {
        bottom?: number;
        right?: number;
        top?: number;
    }

    自动计算位置时,所参考的wrapperElement的区域分割

    {
    * top: 0.2,
    * bottom: 0.2,
    * right: 0.15,
    * }
    • Optionalbottom?: number
    • Optionalright?: number
    • Optionaltop?: number
  • OptionalbeforeOpen?: ((tag?: TagInstance) => boolean)

    鼠标悬停前的拦截函数,返回 true 允许 hover,false 阻止 hover

      • (tag?): boolean
      • Parameters

        Returns boolean

  • Optionaldebug?: boolean

    是否开启调试模式,调试模式popover常驻

    false
    
  • Optionalenabled?: boolean

    是否启用 TagPopover

    开启之后 unfoldedConfig 无效

    false
    
  • OptionalimageURLTransform?: ((url: string, options: {
        height: number;
        width: number;
    }) => string)

    图片URL转换函数

      • (url, options): string
      • Parameters

        • url: string
        • options: {
              height: number;
              width: number;
          }
          • height: number
          • width: number

        Returns string

  • Optionalplacement?: TagPlacement

    popover的位置, 默认根据标签位置自动计算

    top 是标签上方,bottom 是标签下方,left 是标签左侧,right 是标签右侧

    top-left 是标签上方,Popover的左边界与标签的左边界对齐

    top-right 是标签上方,Popover的右边界与标签的右边界对齐

    bottom-left 是标签下方,Popover的左边界与标签的左边界对齐

    bottom-right 是标签下方,Popover的右边界与标签的右边界对齐

    left-top 是标签左侧,Popover的上边界与标签的上边界对齐

    left-bottom 是标签左侧,Popover的下边界与标签的下边界对齐

    right-top 是标签右侧,Popover的上边界与标签的上边界对齐

    right-bottom 是标签右侧,Popover的下边界与标签的下边界对齐

    auto 是根据标签位置自动计算

    'auto'
    
  • Optionaltheme?: "light" | "dark"

    主题,可选值为 'dark' | 'light'

    'dark'
    
  • Optionaltoolbar?: {
        showMore?: boolean;
        showShare?: boolean;
    }

    工具栏配置

    • OptionalshowMore?: boolean
    • OptionalshowShare?: boolean
  • OptionaltransitionDuration?: number

    过渡动画的持续时间, 单位为毫秒

    100
    
  • Optionaltrigger?: "click" | "hover"

    触发方式

    hover - 鼠标悬停触发

    click - 点击触发(fold/unfold模式)

    'hover'
    
  • OptionaltriggerDelay?: number

    触发延迟时间(仅在 trigger 为 hover 时生效), 单位为毫秒

    300
    
  • OptionalviewMoreText?: string

    查看更多按钮的文本

    '查看更多'
    
  • OptionalzIndex?: number

    浮层容器的 zIndex,默认 2000000

标签浮窗相关配置

开启之后 unfoldedConfig 无效

renderType?: "Mesh" | "Dom"

当图片为一张时可以选择通过Mesh渲染

'Dom'
simulate3D?: boolean

是否模拟近大远小的效果

false
tag3DConfig?: {
    autoRender?: boolean;
    container?: HTMLElement;
    devicePixelRatio?: number;
    dpr?: number;
    pointerEvents?: "auto" | "none";
    ratio?: number;
    wrapperStyle?: Partial<CSSStyleDeclaration>;
} & ({
    mode?: "front";
} | {
    behindFiveContainer?: HTMLElement;
    mode: "behind";
})

Type declaration

  • OptionalautoRender?: boolean
  • Optionalcontainer?: HTMLElement
  • OptionaldevicePixelRatio?: number
  • Optionaldpr?: number

    dpr renamed as devicePixelRatio

  • OptionalpointerEvents?: "auto" | "none"
  • Optionalratio?: number
  • OptionalwrapperStyle?: Partial<CSSStyleDeclaration>

内部使用 css3DRenderer 渲染的标签可以使用此配置来设置 css3DRenderer 相关参数

unfoldedConfig?: ConfigFunction | {
    autoFoldWhenHide?: false;
    autoUnfold?:
        | false
        | {
            autoUnfoldProjectX?: MinMax;
            enable?: boolean;
            strategy?: "ScreenPostion";
        }
        | {
            distance?: MinMax;
            enable?: boolean;
            maxNumber?: number;
            strategy?: "MinimumDistance";
        }
        | {
            enable?: boolean;
            strategy?: "FoldWhenMove";
        };
    disableFold?: true;
    disableUnfold?: true;
    keep?: "folded" | "unfolded";
    unfoldDistance?: MinMax;
}

Type declaration

  • OptionalautoFoldWhenHide?: false

    划动到不可见状态时,自动收起,disableFold: true 的标签不受此参数影响

    部分标签是无法收起的

    true
    
  • OptionalautoUnfold?:
        | false
        | {
            autoUnfoldProjectX?: MinMax;
            enable?: boolean;
            strategy?: "ScreenPostion";
        }
        | {
            distance?: MinMax;
            enable?: boolean;
            maxNumber?: number;
            strategy?: "MinimumDistance";
        }
        | {
            enable?: boolean;
            strategy?: "FoldWhenMove";
        }

    自动展开策略

    'ScreenPostion':根据屏幕位置展开

    'MinimumDistance':最近标签自动展开

    'FoldWhenMove':移动屏幕自动收起

  • OptionaldisableFold?: true

    replace by { keep: 'unfolded' }

    部分标签是无法收起的

    undefined
    
  • OptionaldisableUnfold?: true

    replace by { keep: 'folded' }

    部分标签是无法打开的

    undefined
    
  • Optionalkeep?: "folded" | "unfolded"

    保持展开/收起,设置后unfoldedConfig下所有其他配置都不生效

    null
    
  • OptionalunfoldDistance?: MinMax

    min-max米内自动展开,否则收起

展开/收起相关配置

与 popoverConfig 同时使用时,popoverConfig 优先级更高

visibleConfig?: {
    alwaysShowWhenMovePano?: boolean;
    angleRange?: MinMax;
    entryFromModel?: boolean;
    followModelVisibility?: boolean;
    intersectRaycaster?: boolean | {
        checkPoints?: Vector3[] | "center" | "corner";
        distanceAccuracy?: number;
        enabled?: boolean;
        needPassed?: number;
    };
    keep?: "hidden" | "visible";
    visibleDistance?: MinMax | "unLimited";
    visibleFiveMode?: TagVisibleMode | ((tag: TagInstance) => TagVisibleMode);
    visiblePanoIndex?: number[] | "all" | "current";
} | ConfigFunction

Type declaration

  • OptionalalwaysShowWhenMovePano?: boolean

    现在全部标签走点时都不隐藏

  • OptionalangleRange?: MinMax

    3D标签中 「标签所在平面或垂直于标签法线的平面」 与 「摄像机到标签点或中心点的向量」 的夹角,范围内自动展开,范围外自动收起

    只在全景模式下生效

    undefined
    
  • OptionalentryFromModel?: boolean

    全景标签在模型中可见,点击后进入全景看向标签

    false
    
  • OptionalfollowModelVisibility?: boolean

    当 visibleFiveMode 包含 'Floorplan' 或者 'MapView' 时,是否仅在当前楼层模型下可见

    false
    
  • OptionalintersectRaycaster?: boolean | {
        checkPoints?: Vector3[] | "center" | "corner";
        distanceAccuracy?: number;
        enabled?: boolean;
        needPassed?: number;
    }

    碰撞检测配置

    true
    
  • Optionalkeep?: "hidden" | "visible"

    visibleFiveMode 指定的 mode 中,保持可见/不可见。设置后 visibleConfig 中除了 visibleFiveMode 外的所有其他配置都不生效

    null
    
    // 在 Panorama 和 Floorplan 模式下永远保持可见
    const config = {
    keep: 'visible',
    visibleFiveMode: ['Panorama', 'Floorplan'],
    }
    // 在 tag.fiveState.mode 中时,永远保持可见
    const config = {
    keep: 'visible',
    }
  • OptionalvisibleDistance?: MinMax | "unLimited"

    配置可见距离

    只在全景模式下生效

    'unLimited'
    
  • OptionalvisibleFiveMode?: TagVisibleMode | ((tag: TagInstance) => TagVisibleMode)

    在哪些 five mode 下可见

    默认值的设定是在 config 合并后,而不是合并前

    普通全景模式:['Panorama']
    
    const tag = {
    ...
    fiveState: {
    mode: 'Floorplan',
    }
    ...
    config: {},
    }
    // 相当于
    const tag = {
    ...
    fiveState: {
    mode: 'Floorplan',
    }
    ...
    config: {
    visibleFiveMode: 'Floorplan',
    },
    }
  • OptionalvisiblePanoIndex?: number[] | "all" | "current"

    配置标签可见点位

    只在全景模式下生效

    不限制

    仅当前点位可见

    仅指定点位可见

    'all'
    

显示/隐藏相关配置