1. 三维永远面向相机标签 SpriteMark
1.1. 属性
1.1.1. this.marks
所有 mark 的信息,用 mark 的 id 来唯一标识
1.1.2. this.components
mark 的容器 {id: THREE.Object3D}
1.1.3. this.SelectedMark
选中的 mark 图标 {Object}
1.1.4. this.allOids
所有 mark 的 id 的集合,数组形式
1.2. 方法
1.2.1. enabled
该方法用来开启鼠标事件监听
/**
* 该方法用来开启鼠标事件监听
* @function enabled 默认开启
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
spriteMark.enabled();
1.2.2. disabled
该方法用来关闭鼠标事件监听
/**
* 该方法用来关闭鼠标事件监听
* @function disabled
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
spriteMark.disabled();
1.2.3. touchEnabled
该方法用来开启触摸事件监听
/**
* 该方法用来开启触摸事件监听
* @function touchEnabled
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
spriteMark.touchEnabled();
1.2.4. touchDisabled
该方法用来关闭触摸事件监听
/**
* 该方法用来关闭触摸事件监听
* @function touchDisabled
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
spriteMark.touchDisabled();
1.2.5. add
该方法用来添加 mark
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
option | 标签信息 | object | 是 | 见调用方法 |
callback | 回调方法 | function | 否 | 见调用方法 |
/**
* 该方法用来添加mark
* @function add
* @param [options] {Object} 构建mark的参数
* @param [options.position] {Array} mark图标的位置
* @param [options.url] {String} mark图标的地址
* @param [options.id] {String} mark图标的id (默认随机生成)
* @param [options.width] {Number} mark图标宽度 (默认为图片像素宽度)
* @param [options.height] {Number} mark图标的高度 (默认为图片像素高度)
* @param [options.scale] {Number} mark图标的缩放比例 (默认为1)
* @param [options.alwaysVisible] {Boolean} mark图标的是否始终可见 (默认为true)
* @param [options.transparent] {Boolean} mark图标的是否使用alpha通道 (默认为false)
* @param [options.componentId]{string} 该mark关联的构件key
* @param [options.hoverEffect]{number} 鼠标移动到该mark上的一个动画效果, 1是放大,2是无效果, 默认是 1
* @param [options.title]{string} 该mark title名称
* @param [options.titleDisplay]{string} 该mark title的显示模式 有三种模式 "none" | "hover" | "fixed"
* @param [options.titleOffset]{array} 该mark title的位置偏差 [0, 0]
* @param [options.sizeAttenuation]{Boolean} 标签大小是否随相机变化,默认为true,注意:为false时mark的大小会变为屏幕像素大小,请减小mark的尺寸以满足需要。
* @param callback {function} 完成添加的回调函数 参数为所创建的mark的id
* title: "yingjia",
titleDisplay: "hover",
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
var options = {
id: "123",
url: "./img/fire.png",
scale: 2,
useImageSize: true,
alwaysVisible: true,
position: [500, 500, 500],
};
spriteMark.add(options, function (a) {
alert(a);
});
1.2.6. updateMark
该方法用来更新 Mark
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
node | mark 的 id | String | 是 | "123" |
option | 标签信息 | object | 是 | 见调用方法 |
callback | 更新之后的回调 | function | 否 | function(){} |
/**
* 该方法用来更新Mark
* @function updateMark
* @param [options] {Object} 更新mark的参数
* @param [options.position] {Array} mark图标的位置
* @param [options.url] {String} mark图标的地址
* @param [options.width] {Number} mark图标宽度 (默认为图片像素宽度)
* @param [options.height] {Number} mark图标的高度 (默认为图片像素高度)
* @param [options.scale] {Number} mark图标的缩放比例 (默认为1)
* @param [options.alwaysVisible] {Boolean} mark图标的是否始终可见 (默认为true)
* @param [options.transparent] {Boolean} mark图标的是否使用alpha通道 (默认为false)
* @param [options.componentId]{string} 该mark关联的构件key
* @param [options.useImageSize]{Boolean} 是否使用图片本身的尺寸 默认true
* @param callback {function} 更新之后的回调
*/
//调用方法:
var spriteMark = new BOS3D.SpriteMark(viewer3D);
var options = {
url: "./img/fire.png",
scale: 2,
useImageSize: true,
alwaysVisible: true,
};
spriteMark.updateMark("123", options, function () {});
1.2.7. _setupTitleContainer
该方法用来创建一个 title 容器,这是一个内部方法
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
/**
* 该方法用来创建一个title 容器
* @method _setupTitleContainer
* @param
* @return
*/
//调用方法:
// 这是一个内部方法,一部情况下不需要外部调用
1.2.8. setTitleShow
该方法用来控制一个精灵标签的 title 的显示模式
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
id | SpriteMark 实例的 id 属性 | String | 是 | 'a123' |
show | 显示的模式, | String | 是 | 'none' |
/**
* 该方法用来控制一个精灵标签的title的显示模式
* @method setTitleShow
* @param id {string} SpriteMark实例的id属性
* @param show {string} 显示的模式,有三种模式: 'none' | 'fixed' | 'hover'
*/
//调用方法:
// none 表示不显示
// fixed表示固定显示
// hover表示悬停显示
var spriteMark = new BOS3D.SpriteMark(viewer3D);
var options = {
id: "123",
url: "./img/fire.png",
scale: 2,
useImageSize: true,
alwaysVisible: true,
};
spriteMark.add(options, function (id) {
spriteMark.setTitleShow(id, "hover");
});
1.2.9. animation
该方法用来对精灵标签做心脏跳动的动画
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
Sprite | SpriteMark 实例 | String | 是 |
/**
* 该方法用来对精灵标签做心脏跳动的动画
* @method animation
* @param Sprite {SpriteMark} SpriteMark实例
*/
//调用方法:
// 这是一个内部方法,一部情况下不需要外部调用
1.2.10. bigger
该方法用来对精灵标签做放大动画
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
Sprite | SpriteMark 实例 | String | 是 |
/**
* 该方法用来对精灵标签做放大动画
* @method bigger
* @param Sprite {SpriteMark} SpriteMark实例
* @returns {void}
*/
//调用方法:
// 这是一个内部方法,一部情况下不需要外部调用
1.2.11. _updateTitle
该方法用来对精灵标签做放大动画
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
title | title 的对象 | Object | 是 |
/**
* 该方法用来更新一个title的显示效果
* @method _updateTitle
* @param {Object} title 一个title对象
* @returns {void}
*/
//调用方法:
// 这是一个内部方法,一部情况下不需要外部调用
1.2.12. _addTitle
该方法用来为 sprite 添加一个 title
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
sprite | sprite 实例 | Object | 是 |
/**
* 该方法用来为sprite添加一个title
* @method _addTitle
* @param {Object} sprite sprite实例
* @returns {void}
*/
//调用方法:
spriteMark._addTitle(sprite);
1.2.13. setHoverType
该方法用来设置在 hover 模式下的运动效果
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
id | SpriteMark 实例的 id 属性 | string | 是 | '123' |
type | hover 下 title 跟随鼠标还是固定模式,1 是跟随,2 是固定, 默认是 1 | Number | 是 | '123' |
/**
* 该方法用来设置在hover模式下的运动效果
* @method setHoverType
* @param {string} id SpriteMark实例的id属性
* @param {Number} type hover下title跟随鼠标还是固定模式,1是跟随,2是固定, 默认是 1
* @returns {void}
*/
//调用方法:
spriteMark.setHoverType("123", 1);
1.2.14. registerEvent
该方法用来对精灵标签添加事件处理
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
/**
* 该方法用来对精灵标签添加事件处理
* @method registerEvent
*/
//调用方法:
// 这是一个内部方法,一部情况下不需要外部调用
1.2.15. remove
方法用来将 mark 销毁
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
nodes | 标签 id 或 id 数组 | String 或 Array | 是 | ["123","1234"] |
/**
* 该方法用来将mark销毁
* @function remove
* @param nodes {String || Array} mark的id或id数组
*/
//调用方法:
spriteMark.remove(["123", "1234"]);
1.2.16. hide
该方法用来将 mark 隐藏
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
nodes | 标签 id 或 id 数组 | String 或 Array | 是 | ["123","1234"] |
/**
* 该方法用来将mark隐藏
* @function hide
* @param nodes {String || Array} mark的id或id数组
*/
//调用方法:
spriteMark.hide(["123", "1234"]);
1.2.17. show
该方法用来将隐藏的 mark 显示
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
nodes | 标签 id 或 id 数组 | String 或 Array | 是 | ["123","1234"] |
/**
* 该方法用来将隐藏的mark显示
* @function show
* @param nodes {String || Array} mark的id或id数组
*/
//调用方法:
spriteMark.show(["123", "1234"]);
1.2.18. isolation
该方法用来将选中的 mark 隔离显示
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
nodes | 标签 id 或 id 数组 | String 或 Array | 是 | ["123","1234"] |
/**
* 该方法用来将选中的mark隔离显示
* @function isolation
* @param nodes {String || Array} mark的id或id数组
*/
//调用方法:
spriteMark.isolation(["123", "1234"]);
1.2.19. resize
该方法用来调整 mark 的尺寸
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
nodes | 标签 id 或 id 数组 | String 或 Array | 是 | ["123","1234"] |
width | 宽度拉伸比例 | Number | 是 | 5 |
height | 高度拉伸比例 | Number | 是 | 10 |
/**
* 该方法用来调整mark的尺寸
* @function resize
* @param nodes {Array} markid数组
* @param widht {Number} 宽度
* @param height {Number} 高度
*/
//调用方法:
spriteMark.resize(["123", "1234"], 1000, 2000);
1.2.20. listentoSelectMarks
该方法用来将选中的 mark 对象返回
/**
* 该方法用来将选中的mark对象返回
* @function listentoSelectMarks
* @param callback {Function} 回调函数,参数为:选中的构件的id(以逗号分隔),选中的构件对象
*/
//调用方法:
spriteMark.listentoSelectMarks(function (a) {
spriteMark.isolation(a);
});