基础构成
# 基础构成
# 命名空间
Joint3d
Joint3d 为框架默认命名空间,使用该框架开发时都需要统以 Joint3d.
开始
警告
开发时尽量不要使用 Joint3d 为变量名或者命名空间,避免框架无法正常使用。
# 全局函数
# use
在 Joint3d 中使用第三方模块或框架
let plugin = {
install: (Joint3d) => {},
}
Joint3d.use(plugin)
# mixin
在 Joint3d 中添加额外属性或者函数
let comp = {
a: 'b',
}
Joint3d.mixin(comp)
Joint3d.a // b
# ready
框架主入口,使用框架时必须以这个开始,否则无法构建 3D 场景
global.Joint3d = Joint3d //将 Joint3d 变量设置为全局,方便在工程中使用
Joint3d.ready(() => {
let viewer = new Joint3d.Viewer(divId)
})
# 常量
框架内部默认常量
注意
开发时请使用默认常量进行开发
# MouseEventType
Joint3d.MouseEventType.LEFT_DOWN
: (场景、图层、覆盖物)鼠标左键按下事件
Joint3d.MouseEventType.LEFT_UP
: (场景、图层、覆盖物)鼠标左键抬升事件
Joint3d.MouseEventType.CLICK
: (场景、图层、覆盖物)鼠标点击事件
Joint3d.MouseEventType.RIGHT_DOWN
: (场景、图层、覆盖物)鼠标右键按下事件
Joint3d.MouseEventType.RIGHT_UP
: (场景、图层、覆盖物)鼠标右键按下事件
Joint3d.MouseEventType.RIGHT_CLICK
: (场景、图层、覆盖物)鼠标右击事件
Joint3d.MouseEventType.DB_CLICK
: (场景、图层、覆盖物)鼠标双击事件
Joint3d.MouseEventType.MOUSE_MOVE
: 场景鼠标移动事件
Joint3d.MouseEventType.WHEEL
: 场景鼠标滚轮事件
Joint3d.MouseEventType.MOUSE_OVER
: 覆盖物鼠标移入事件
Joint3d.MouseEventType.MOUSE_OUT
: 覆盖物鼠标移出事件
# SceneEventType
Joint3d.SceneEventType.CAMERA_MOVE_END
: 相机移动完成
Joint3d.SceneEventType.CAMERA_CHANGED
: 相机位置完成
Joint3d.SceneEventType.PRE_UPDATE
: 场景更新前
Joint3d.SceneEventType.POST_UPDATE
: 场景更新后
Joint3d.SceneEventType.PRE_RENDER
: 场景渲染前
Joint3d.SceneEventType.POST_RENDER
: 场景渲染后
Joint3d.SceneEventType.MORPH_COMPLETE
: 场景模式变换完成
Joint3d.SceneEventType.CLOCK_TICK
: 时钟跳动
# MouseMode
Joint3d.MouseMode.LEFT_MIDDLE
: 左键拖动,中键翻转(默认)
Joint3d.MouseMode.LEFT_RIGHT
: 左键拖动,右键翻转
# ImageryType
Joint3d.ImageryType.ARCGIS
: arcgis 地图
Joint3d.ImageryType.SINGLE_TILE
: 单图片地图
Joint3d.ImageryType.WMS
: WMS 地图
Joint3d.ImageryType.WMTS
: WMTS 地图
Joint3d.ImageryType.XYZ
: xyz 格式地图
Joint3d.ImageryType.COORD
: 瓦片坐标地图
Joint3d.ImageryType.AMAP
: 高德地图
Joint3d.ImageryType.BAIDU
: 百度地图
Joint3d.ImageryType.GOOGLE
: 谷歌地图
Joint3d.ImageryType.TDT
: 天地图
Joint3d.ImageryType.TENCENT
: 腾讯地图
# TerrainType
Joint3d.TerrainType.NONE
: 无地形
Joint3d.TerrainType.XYZ
: xyz 格式地形
Joint3d.TerrainType.GOOGLE
: 谷歌地形
Joint3d.TerrainType.ARCGIS
: arcgis 地形
Joint3d.TerrainType.VR
: VR 地形
# LayerType
Joint3d.LayerType.VECTOR
: 矢量图层
Joint3d.LayerType.PRIMITIVE
: 图元图层
Joint3d.LayerType.TILESET
: 3dtiles 图层
Joint3d.LayerType.HTML
: html 图层
Joint3d.LayerType.GEOJSON
: GeoJson 图层
Joint3d.LayerType.CLUSTER
: 聚合图层
Joint3d.LayerType.CAMERA_VIDEO
: 相机视频图层
Joint3d.LayerType.PLANE_VIDEO
: 平面视频图层
Joint3d.LayerType.KML
: kml 图层
Joint3d.LayerType.CZML
: czml 图层
Joint3d.LayerType.HEAT
: 热区图层
Joint3d.LayerType.MAPV
: Mapv 图层
Joint3d.LayerType.CHART
: echarts 图层
# OverlayType
Joint3d.OverlayType.POINT
: 点 可标绘
Joint3d.OverlayType.POLYLINE
: 线 可标绘
Joint3d.OverlayType.POLYGON
: 面 可标绘
Joint3d.OverlayType.MODEL
: 模型
Joint3d.OverlayType.BILLBOARD
: 图标点 可标绘
Joint3d.OverlayType.RECTANGLE
: 矩形 可标绘
Joint3d.OverlayType.CIRCLE
: 圆 可标绘
Joint3d.OverlayType.LABEL
: 标签
Joint3d.OverlayType.TILESET
: 3DTiles
Joint3d.OverlayType.BOX
: 盒
Joint3d.OverlayType.CORRIDOR
: 走廊
Joint3d.OverlayType.CYLINDER
: 圆柱
Joint3d.OverlayType.ELLIPSE
: 椭圆
Joint3d.OverlayType.ELLIPSOID
: 球体
Joint3d.OverlayType.PLANE
: 面板
Joint3d.OverlayType.POLYLINE_VOLUME
: 管道
Joint3d.OverlayType.WALL
: 墙体
Joint3d.OverlayType.DYNAMIC_BILLBOARD
: 动态图标点
Joint3d.OverlayType.DYNAMIC_MODEL
: 动态模型点
Joint3d.OverlayType.CUSTOM_BILLBOARD
: 自定义图标
Joint3d.OverlayType.CUSTOM_LABEL
: 自定义标签
Joint3d.OverlayType.ATTACK_ARROW
: 攻击箭头 可标绘
Joint3d.OverlayType.DOUBLE_ARROW
: 双箭头 可标绘
Joint3d.OverlayType.FINE_ARROW
: 直箭头 可标绘
Joint3d.OverlayType.GATHERING_PLACE
: 聚集地 可标绘
Joint3d.OverlayType.TAILED_ATTACK_ARROW
: 燕尾攻击箭头 可标绘
Joint3d.OverlayType.BILLBOARD_PRIMITIVE
: 图标图元
Joint3d.OverlayType.DIFFUSE_WALL_PRIMITIVE
: 扩散墙图元
Joint3d.OverlayType.ELEC_ELLIPSOID_PRIMITIVE
: 电弧球图元
Joint3d.OverlayType.FLOW_LINE_PRIMITIVE
: 流动线图元
Joint3d.OverlayType.LABEL_PRIMITIVE
: 文本图元
Joint3d.OverlayType.MODEL_PRIMITIVE
: 模型图元
Joint3d.OverlayType.POINT_PRIMITIVE
: 点图元
Joint3d.OverlayType.POLYLINE_PRIMITIVE
: 线图元
Joint3d.OverlayType.SCAN_CIRCLE_PRIMITIVE
: 扫描圆图元
Joint3d.OverlayType.TRAIL_LINE_PRIMITIVE
: 轨迹线图元
Joint3d.OverlayType.WATER_PRIMITIVE
: 水面图元
Joint3d.OverlayType.VIDEO_PRIMITIVE
: 视频图元
Joint3d.OverlayType.CAMERA_VIDEO
: 视频融合
Joint3d.OverlayType.PLAN_VIDEO
: 平面视频
# TrackViewMode
Joint3d.TrackViewMode.FP
: 第一人称视角
Joint3d.TrackViewMode.TP
: 第三人称视角
Joint3d.TrackViewMode.TRACKED
: 跟随视角
Joint3d.TrackViewMode.FREE
: 自由视角
# PositionEditorType
Joint3d.PositionEditorType.TRANSLATION
: 偏移
Joint3d.PositionEditorType.ROTATION
: 旋转
# ClippingDirection
Joint3d.ClippingDirection.UP
: 向上
Joint3d.ClippingDirection.DOWN
: 向下
Joint3d.ClippingDirection.LEFT
: 向左
Joint3d.ClippingDirection.RIGHT
: 向右
Joint3d.ClippingDirection.FRONT
: 向前
Joint3d.ClippingDirection.BACK
: 向后
# AnalysisType
Joint3d.AnalysisType.CONTOUR_LINE
:等高线
Joint3d.AnalysisType.SHADOWS
:阴影
Joint3d.AnalysisType.SIGHT_LINE
:通视分析(线)
Joint3d.AnalysisType.SIGHT_CIRCLE
:通视分析(圆)
Joint3d.AnalysisType.VIEWSHED
:可视域
# Joint3d.Viewer
3D 场景主要接口,在给定的 DivId 中构建三维场景.
# example
<div id="viewer-container"></div>
let viewer = Joint3d.Viewer('viewer-container')
global.viewer = viewer // 添加到全局变量
注意
如果开发使用的是 Vue 这样的 MVVM 框架,不要将 viewer、layer、overlay 添加到数据模型中。由于 3D 场景中会不停的刷新每一帧,如果将数据添加到数据模型中,长时间的话会导致浏览器的压力增大而奔溃。
# creation
constructor(id,[options])
构造函数
- 参数
{String} id
:容器 ID{Object} options
:属性
- 返回值
viewer
- 参数
//属性参数(可选)
{
"contextOptions": {
"webgl": {
"alpha": false, //背景
"depth": true,
"stencil": false,
"antialias": true,
"powerPreference": "high-performance",
"premultipliedAlpha": true,
"preserveDrawingBuffer": false,
"failIfMajorPerformanceCaveat": false
},
"allowTextureFilterAnisotropic": true
},
"sceneMode": 3 //1: 2.5D,2: 2D,3: 3D
}
# properties
{Element} jointContainer
:框架自定义容器readonly
{Object} scene
:场景readonly
{Object} camera
:相机readonly
{Element} canvas
:canvas 节点readonly
{Object} clock
:时钟{Object} dataSources
:数据资源集合{Object} imageryLayers
:瓦片集合{Object} entities
:实体集合{Popup} popup
:气泡窗口readonly
{ContextMenu} contextMenu
:右击弹框readonly
{Tooltip} tooltip
:提示框readonly
{MapSplit} mapSplit
:地图分割readonly
{Compass} compass
:罗盘readonly
{ZoomController} zoomController
:罗盘readonly
{LocationBar} locationBar
:坐标信息readonly
{DistanceLegend} distanceLegend
:比例尺readonly
{LoadingMask} loadingMask
:加载蒙层readonly
{Position} cameraPosition
:相机位置readonly
{Number} resolution
:分辨率readonly
{Rect} viewBounds
:视野范围readonly
# methods
setOptions(options)
设置属性
- 参数
{Object} options
:属性对象- 返回值
this
- 返回值
- 参数
// 属性参数(可选)
{
"shadows": false, // 是否开启阴影
"resolutionScale": 1, // 设置渲染分辨率的缩放比例
"showAtmosphere": true, //是否显示大气层
"showSun": true, //是否显示太阳
"showMoon": true, //是否显示月亮
"enableFxaa": true, //是否开启抗锯齿
"msaaSamples": 1, //msaa抗拒出取样度
"cameraController": {
// 相机控制
"enableRotate": true, // 是否可以旋转
"enableTilt": true, // 是否可以翻转
"enableTranslate": true, // 是否可以平移
"enableZoom": true, // 是否可以缩放
"enableCollisionDetection": true, // 是否支持碰撞检测
"minimumZoomDistance": 1.0, // 最小缩放距离
"maximumZoomDistance": 40489014.0 // 最大缩放距离
},
"globe": {
"show": true, // 是否显示地球
"showGroundAtmosphere": true, // 显示地面大气
"enableLighting": false, //是否开启灯光,开启后地球会根据当前时间启用灯光
"depthTestAgainstTerrain": false, //是否开启深度检测
"tileCacheSize": 100, // 默认瓦片缓存大小
"preloadSiblings": false, //是否应预加载渲染同级图块
"terrainExaggeration": 1, //地形夸张系数
"terrainExaggerationRelativeHeight": 1, //地形相对高度夸张系数
"baseColor": new Joint3d.Color(0, 0, 0.5, 1), //地球默认底色
"filterColor": new Joint3d.Color(0, 0, 0, 0), //瓦片过滤色
"translucency": {
//地表透明
"enabled": false, // 是否开启地表透明
"backFaceAlpha": 1, // 地球背面透明度
"backFaceAlphaByDistance": null, //根据距离设置地球背面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
"frontFaceAlpha": 1, // 地球正面透明度
"frontFaceAlphaByDistance": null //根据距离设置地球正面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
}
},
"skyBox": {
"sources": {}, // 六个面的贴图
"show": true, //是否显示
"offsetAngle": 0 //旋转角度
}
}
setPitchRange(min,max)
设置翻转角度
- 参数
{Number} min
:最小角度{Number} max
:最大角度
- 返回值
this
- 参数
limitCameraToGround()
设置限制相机到地下
- 返回值
this
- 返回值
changeSceneMode(sceneMode, duration)
改变场景模式
- 参数
{Number} sceneMode
:场景模式 ,2:2D,3:3D,2.5:2.5D{Number} duration
:间隔时间
- 返回值
this
- 参数
changeMouseMode(mouseMode)
改变鼠标使用模式
- 参数
{Number} mouseMode
:鼠标模式,详情参考:Joint3d.MouseMode
- 返回值
this
- 参数
addBaseLayer(baseLayers,options)
添加地图
- 参数
{baseLayer|Array<baseLayer>} baseLayers
:地图{Object} options
:属性
- 返回值
this
- 参数
//属性参数
{
"name": "电子地图", //名称
"iconUrl": "../preview.png" //缩略图
}
changeBaseLayer(index)
更改地图
- 参数
{Number} index
:地图索引
- 返回值
this
- 参数
getImageryLayerInfo(windowPosition)
获取瓦片信息
- 参数
{Object} windowPosition
:窗口坐标
- 返回值
promise
- 参数
addTerrain(terrain)
添加地形
- 参数
{Terrain} terrain
:地形
- 返回值
this
- 参数
changeTerrain(index)
变换地形
- 参数
{Number} index
:地形索引
- 返回值
this
- 参数
removeTerrain()
移除地形
- 返回值
this
- 返回值
addLayerGroup(layerGroup)
添加图层组
- 参数
{LayerGroup} layerGroup
:图层组
- 返回值
this
- 参数
removeLayerGroup(layerGroup)
移除图层组
- 参数
{LayerGroup} layerGroup
:图层组
- 返回值
this
- 参数
getLayerGroup(id)
获取图层组
- 参数
{String} id
:图层组 ID
- 返回值
layerGroup
- 参数
addLayer(layer)
添加图层
- 参数
{Layer} layer
:图层
- 返回值
this
- 参数
removeLayer(layer)
删除图层
- 参数
{Layer} layer
:图层
- 返回值
this
- 参数
getLayer(id)
获取图层
- 参数
{String} id
:图层 ID
- 返回值
layer
- 参数
getLayers()
获取所有图层,不包括地图
- 返回值
layer
- 返回值
eachLayer(method, context)
遍历所有图层
- 参数
{Function} method
:回调函数{Object} context
:上下文,默认为 this
- 返回值
this
viewer.eachLayer((layer) => {})
- 参数
flyTo(target,duration)
飞向目标
- 参数
{VectorLayer|Overlay} target
:目标{Number} duration
:飞到位置时间,单位:秒
- 返回值
this
- 参数
zoomTo(target)
缩放到目标
- 参数
{VectorLayer|Overlay} target
:目标
- 返回值
this
- 参数
flyToPosition(position, completeCallback, duration)
飞到具体位置
- 参数
{Position} position
:位置{Function} completeCallback
:飞完之后触发的回调{Number} duration
:飞到位置时间,单位:秒
- 返回值
this
- 参数
zoomToPosition(position, completeCallback)
缩放到具体位置
- 参数
{Joint3d.Position} position
:位置{Function} completeCallback
:缩放完成后触发的回调
- 返回值
this
- 参数
on(type, callback, context)
事件订阅
- 参数
{Object} type
:订阅类型{Function} callback
:订阅回调{Object} context
:上下文
- 返回值
this
- 参数
once(type, callback, context)
事件订阅(一次)
- 参数
{Object} type
:订阅类型{Function} callback
:订阅回调{Object} context
:上下文
- 返回值
this
- 参数
off(type, callback, context)
取消事件订阅
- 参数
{Object} type
:订阅类型{Function} callback
:订阅回调{Object} context
:上下文
- 返回值
this
- 参数
destroy()
销毁三维场景
- 返回值
this
- 返回值
exportScene(name)
导出场景
- 参数
{String} name
:名称,默认为 scene
- 返回值
this
- 参数
use(plugin)
使用插件(
慎用
),这个和全局的不同。该函数会将 3D 场景作为参数传入到插件中- 参数
{Object} plugin
:插件
- 返回值
this
let plugin = { install: (viewer) => {}, } viewer.use(plugin)
- 参数
# Popup
气泡窗口
# example
let popup = viewer.popup
popup.setContent('<div></div>')
# properties
{String} state
:状态readonly
{Object} config
:配置writeOnly
// 配置(可选)
// 配置后会影响全局的popup的显示样式,请慎重。
{
"position": "center", // popup的位于鼠标的点击位置的方向,有:center,left ,right
"customClass": "custom" // 添加自定义的Css 类名到popup中,多个用空格隔开
}
# methods
setPosition(position)
设置位置
- 参数
{Cartesian3} position
:世界坐标
- 返回值
this
- 参数
setContent(content)
设置内容
- 参数
{String|Element} content
:内容
- 返回值
this
- 参数
setWrapper(wrapper)
设置容器
- 参数
{Element} wrapper
:容器(一般用于 MVVM 框架的模板)
- 返回值
this
- 参数
showAt(position, content)
设置内容
- 参数
{Cartesian3} position
:世界坐标{String|Element} content
:内容
- 返回值
this
- 参数
hide()
隐藏气泡窗口
- 返回值
this
- 返回值
# ContextMenu
右击菜单
# example
let contextMenu = viewer.contextMenu
contextMenu.enable = true
contextMenu.DEFAULT_MENU = [
{
label: '测试',
callback: (e) => {}, // e是一个对象主要包括 windowPosition,position,surfacePosition,overlay
context: this,
},
] // 设置默认的右击菜单,会影响全局右击菜单(慎用)。
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
{Array} DEFAULT_MENU
:默认菜单,菜单的回调函数参数为一个对象writeOnly
# Tooltip
提示框
# example
let tooltip = viewer.tooltip
tooltip.enable = true
tooltip.showAt({ x: 100, y: 100 }, '测试')
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# methods
showAt(position,content)
设置位置
- 参数
{Cartesian2} position
:屏幕坐标{String|Element} content
:内容
- 返回值
this
- 参数
# MapSplit
地图分割
# examples
let baseLayer_elc = Joint3d.ImageryLayerFactory.createGoogleImageryLayer()
viewer.mapSplit.enable = true
viewer.mapSplit.addBaseLayer(baseLayer_elc, -1)
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# methods
addBaseLayer(baseLayer,[splitDirection])
添加地图
- 参数
{BaseLayer} baseLayer
:地图{Number} splitDirection
:分割方向,-1:左,0:无,1:右
- 返回值
this
- 参数
# Compass
罗盘
# examples
viewer.compass.enable = true
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# ZoomController
缩放控制
# examples
viewer.zoomController.enable = true
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# LocationBar
坐标信息
# examples
viewer.locationBar.enable = true
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# DistanceLegend
比例尺
# examples
viewer.distanceLegend.enable = true
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# LoadingMask
加载蒙层
# examples
viewer.loadingMask.enable = true
# properties
{Boolean} enable
:是否启用{String} state
:状态readonly
# Joint3d.SkyBox
# example
scene.skyBox = new Joint3d.SkyBox({
sources: {
positiveX: 'skybox_px.png',
negativeX: 'skybox_nx.png',
positiveY: 'skybox_py.png',
negativeY: 'skybox_ny.png',
positiveZ: 'skybox_pz.png',
negativeZ: 'skybox_nz.png',
},
})
# creation
constructor(id)
构造函数
- 参数
{Object} options
:配置
- 返回值
skyBox
- 参数
//options(可选)
{
"sources": {}, // 六个面的贴图
"show": true //显示
}
# properties
{Object} sources
:六个面的贴图{Boolean} show
:显示
# Joint3d.GroundSkyBox
# example
scene.skyBox = new Joint3d.GroundSkyBox({
sources: {
positiveX: 'skybox_px.png',
negativeX: 'skybox_nx.png',
positiveY: 'skybox_py.png',
negativeY: 'skybox_ny.png',
positiveZ: 'skybox_pz.png',
negativeZ: 'skybox_nz.png',
},
})
# creation
constructor(id)
构造函数
- 参数
{Object} options
:配置
- 返回值
skyBox
- 参数
//options(可选)
{
"sources": {}, // 六个面的贴图
"show": true, //显示
"offsetAngle": 0 //旋转角度
}
# properties
{Object} sources
:六个面的贴图{Boolean} show
:显示{Number} offsetAngle
:旋转角度
# Joint3d.Position
坐标类,用于描述物体在场景中的具体位置,采用右手标准
# example
let position = new Joint3d.Position(120, 22, 102)
let position1 = Joint3d.Position.fromString('120,22,102')
let position2 = Joint3d.Position.fromArray([120, 22, 102])
let position3 = Joint3d.Position.fromObject({ lng: 120, lat: 22, height: 102 })
# creation
constructor(lng,lat,alt,heading,pitch,roll)
构造函数
- 参数
{Number} lng
:经度{Number} lat
:纬度{Number} alt
:高度,单位:米,默认:0{Number} heading
:偏航角度,可能其他框架作 yaw,表示绕 Z 轴旋转。默认:0{Number} pitch
:俯仰角度,表示绕 Y 轴旋转。默认:0{Number} roll
:翻转角度,表示绕 X 轴旋转。默认:0
- 返回值
position
- 参数
# properties
{Number} lng
:经度{Number} lat
:纬度{Number} alt
:高度,单位:米,默认:0{Number} heading
:偏航角度,可能其他框架作 yaw,表示绕 Z 轴旋转。默认:0{Number} pitch
:俯仰角度,表示绕 Y 轴旋转。默认:0{Number} roll
:翻转角度,表示绕 X 轴旋转。默认:0
# methods
serialize()
序列化
- 返回值
string
- 返回值
copy()
复制一个新的位置
- 返回值
position
- 返回值
toString()
将坐标字符化
- 返回值
string
- 返回值
toArray()
将坐标数组化
- 返回值
array
- 返回值
toObject()
将坐标对象化
- 返回值
Object
- 返回值
# static methods
fromString(str)
将字符化坐标转换为坐标对象
- 参数
{String} str
:字符化坐标
- 返回值
position
- 参数
fromArray(array)
将数组化坐标转换为坐标对象
- 参数
{Array} array
:数组化坐标
- 返回值
position
- 参数
fromObject(obj)
将 Json 对象坐标转换为坐标对象
- 参数
{Object} obj
:Json 对象坐标
- 返回值
position
- 参数
fromCoordString(str)
deprecated
字符坐标串转换为坐标对象
- 参数
{String} str
:字符坐标串
- 返回值
position
- 参数
fromCoordArray(array)
deprecated
坐标数组转换为坐标对象
- 参数
{Array<String|Number>} array
:坐标数组
- 返回值
position
- 参数
deserialize(valStr)
反序列化
- 参数
{String} valStr
:序列化的对象
- 返回值
position
- 参数
# Joint3d.Color
颜色类
# example
//一种颜色,使用红色、绿色、蓝色和 alpha 值指定,范围从 0(无强度)到 1.0(完全强度)。
let color = new Joint3d.Color(red, green, blue, alpha)
//从 CSS 颜色值创建一个 Color 实例。
let blue = Joint3d.Color.fromCssColorString('#67ADDF');
let green = Joint3d.Color.fromCssColorString('green');
//一个不可变的 Color 实例初始化为 CSS 颜色 #FF0000
let red = Joint3d.Color.RED
//创建完全随机的颜色
let color = Joint3d.Color.fromRandom();
//创建一个随机的黄色阴影。
let color = Joint3d.Color.fromRandom({
red : 1.0,
green : 1.0,
alpha : 1.0
});
//创建随机明亮的颜色。
let color = Joint3d.Color.fromRandom({
minimumRed : 0.75,
minimumGreen : 0.75,
minimumBlue : 0.75,
alpha : 1.0
});
//创建一个新的 Color,它具有与此 Color 相同的红色、绿色和蓝色分量,但具有指定的 alpha 值。
let translucentRed = Joint3d.Color.RED.withAlpha(0.9);
# properties
{Color} RED
:红色{Color} YELLOW
:黄色{Color} WHITE
:白色{Color} GREEN
:绿色{Color} BLACK
:黑色{Color} BLUE
:蓝色
# Joint3d.TilesetStyle
tileset 样式,用于设置 3dtiles 的颜色设置
# example
let style = new Joint3d.TilesetStyle()
style.color = {
conditions: [
['${floor} >= 5', 'rgb(198, 106, 11)'],
['true', 'rgb(127, 59, 8)'],
],
}
# Joint3d.JulianDate
朱莉安日历
let date = Joint3d.JulianDate.now()
# static methods
now()
当前朱莉安时间
- 返回值
date
- 返回值
fromDate(date)
通过 Js 时间创建朱莉安时间
- 参数
{Date} date
:Js 时间
- 返回值
date
- 参数
# Joint3d.Rect
矩形相关函数
# example
let r = Joint3d.Rect.fromDegrees(10, 20, 12, 31)
# Joint3d.CallbackProperty
回调属性,用户通过自定义回调函数来返回需要的值。回调函数中,用户可以使用 time 给定 value,也可以自定设置。
let position = new Joint3d.Position(120, 20)
let point = new Joint3d.Point(position)
let size = 0
point.setStyle({
pixelSize: new Joint3d.CallbackProperty((time) => {
size += 1
if (size == 10) {
size = 0
}
return size
}),
})
# Joint3d.Parse
坐标解析工具类
let position = Joint3d.Parse.parsePosition('123,32,0')
# static methods
parsePosition(position)
解析坐标为 Joint3d.Position
- 参数
{String|Array|Position} position
:坐标
- 返回值
position
- 参数
parsePositions(positions)
解析坐标为 Array<Joint3d.Position>
- 参数
{String|Array} positions
: 坐标
- 返回值
array
- 参数
parsePointCoordToArray(position)
解析点位坐标为数组
- 参数
{String|Position} position
:点位坐标
- 返回值
array
- 参数
parsePolylineCoordToArray(positions)
解析线坐标为二维数组
- 参数
{String|Array} positions
:线坐标
- 返回值
array
- 参数
parsePolygonCoordToArray(positions,loop)
解析面坐标为三维数组
- 参数
{String|Array} positions
:面坐标{Boolean} loop
:闭合
- 返回值
array
- 参数
# Joint3d.Transform
坐标转换工具类
let cartesian3 = Joint3d.Transform.transformWGS84ToCartesian(new Joint3d.Position(120, 20))
# static methods
transformCartesianToWGS84(cartesian)
世界坐标转换为 84 坐标
- 参数
{Cartesian3} cartesian
:世界坐标
- 返回值
position
- 参数
transformWGS84ToCartesian(position)
84 坐标转换为世界坐标
- 参数
{Position} position
:84 坐标
- 返回值
cartesian
- 参数
transformWGS84ToCartographic(position)
84 坐标转换为制图坐标
- 参数
{Position} position
:84 坐标
- 返回值
cartographic
- 参数
transformCartesianArrayToWGS84Array(cartesianArr)
世界坐标数组转 84 坐标数组
- 参数
{Array<cartesian3>} cartesianArr
:世界坐标数组
- 返回值
array
- 参数
transformWGS84ArrayToCartesianArray(WGS84Arr)
84 坐标数组转世界坐标数组
- 参数
{Array<cartesian3>} WGS84Arr
:84 坐标数组
- 返回值
array
- 参数
transformWGS84ToMercator(position)
84 坐标转 Mercator
- 参数
{Position} position
:84 坐标
- 返回值
position
- 参数
transformMercatorToWGS84(position)
Mercator 坐标转 84
- 参数
{Position} position
:Mercator 坐标
- 返回值
position
- 参数
transformWindowToWGS84(position,viewer)
屏幕坐标转 84
- 参数
{Object} position
: 屏幕坐标,格式{x:1,y:1}
{Viewer} viewer
:3D 场景
- 返回值
position
- 参数
transformWGS84ToWindow(position,viewer)
84 转屏幕坐标
- 参数
{Position} position
: 84 坐标{Viewer} viewer
:3D 场景
- 返回值
Object
- 参数
# Joint3d.CoordTransform
国内坐标转换工具
let point = Joint3d.CoordTransform.BD09ToGCJ02(120, 20)
# static methods
BD09ToGCJ02(lng, lat)
百度坐标系 (BD-09) 的转换 火星坐标系 (GCJ-02)
- 参数
{Number} lng
:经度{Number} lat
:纬度
- 返回值
[]
- 参数
GCJ02ToBD09(lng, lat)
火星坐标系 (GCJ-02) 转换为 百度坐标系 (BD-09)
- 参数
{Number} lng
:经度{Number} lat
:纬度
- 返回值
[]
- 参数
WGS84ToGCJ02(lng, lat)
WGS-84 转换为 火星坐标系 (GCJ-02)
- 参数
{Number} lng
:经度{Number} lat
:纬度
- 返回值
[]
- 参数
GCJ02ToWGS84(lng, lat)
火星坐标系 (GCJ-02) 转换为 WGS-84
- 参数
{Number} lng
:经度{Number} lat
:纬度
- 返回值
[]
- 参数
# Joint3d.Math
基本函数类
# static methods
area(positions)
面积,单位:平方米
- 参数
{Array<Position>} positions
: 点位数据
- 返回值
number
- 参数
bounds(positions , expand)
边界
- 参数
{Array<Position>} positions
: 点位数据{Number}} expand
: 扩展比例:0~1
- 返回值
object
- 参数
mid(start , end)
两点之间的中心点
- 参数
start
: 开始位置end
: 结束位置
- 返回值
position
- 参数
center(positions)
中心点
- 参数
{Array<Position>} positions
: 点位数据
- 返回值
position
- 参数
distance(positions)
距离,单位:米
- 参数
{Array<Position>} positions
: 点位数据
- 返回值
number
- 参数
heading(start,end)
偏转角度,单位:度
- 参数
start
: 开始位置end
: 结束位置
- 返回值
number
- 参数
parabola(start, end,height,count)
抛物线
- 参数
start
: 开始位置end
: 结束位置{Number} height
: 最高点高度{Number} count
: 点位数量
- 返回值
Array
- 参数
# Joint3d.Util
工具类
# static methods
uuid(prefix)
生成 uuid
- 参数
{String} prefix
:前缀,默认为 D
- 返回值
string
- 参数
merge(dest, ...sources)
属性合并
- 参数
{Object} dest
:目标对象{Object|Array} sources
:需要合并的属性
- 返回值
object
- 参数
emptyImageUrl()
空图片
debounce(fn,delay)
防抖
throttle(fn,delay)
节流
# Joint3d.DomUtil
Dom 工具类
# static methods
get(id)
创建 dom
- 参数
{String} id
: 要素 ID
- 返回值
Element
- 参数
create(tagName, className, [container])
创建 dom
- 参数
{String} tagName
: 标签名{String} className
: 样式名,多个用空格隔开{Element} [container]
: 父容器
- 返回值
Element
- 参数
addClass(el, name)
添加类名
- 参数
{Element} el
: 要素{String} className
: 样式名,多个用空格隔开
- 参数
removeClass(el, name)
删除类名
- 参数
{Element} el
: 要素{String} className
: 样式名,多个用空格隔开
- 参数
addClass(el, name)
添加类名
- 参数
{Element} el
: 要素{String} className
: 样式名,多个用空格隔开
- 参数
createSvg(width, height, path, [container])
添加类名
- 参数
{Number} width
: 宽度{Number} height
: 高度{String} path
: 路径{Element} [container]
: 父容器
- 返回值
svg
- 参数
parseDom(domStr, [withWrapper], [className])
字符串转 Dom
- 参数
{String} domStr
: dom 字符串{Boolean} withWrapper
:返回是否含有父容器{String} className
: 类样式名称
- 返回值
Element | Nodes
- 参数
enterFullscreen(el)
进入全屏
- 参数
{Element} el
: 要素
- 参数
exitFullscreen()
退出全屏
createVideo(url, className, [container])
创建视频节点
- 参数
{String} url
: 视频地址{String} className
: 样式名,多个用空格隔开{Element} [container]
: 父容器
- 返回值
Element | Nodes
- 参数