Joint3d-SDK 开发文档
  • 基础构成
  • 地图地形
  • 业务图层
  • 覆盖元素
  • 材质属性
  • 效果动画
  • 实用工具
  • 场景分析
  • 第三方集成
  • English
  • 简体中文
  • 基础构成
  • 地图地形
  • 业务图层
  • 覆盖元素
  • 材质属性
  • 效果动画
  • 实用工具
  • 场景分析
  • 第三方集成
  • English
  • 简体中文
  • 基础构成

    • 命名空间
      • 全局函数
        • use
        • mixin
        • ready
      • 常量
        • MouseEventType
        • SceneEventType
        • MouseMode
        • ImageryType
        • TerrainType
        • LayerType
        • OverlayType
        • TrackViewMode
        • PositionEditorType
        • ClippingDirection
        • AnalysisType
      • Joint3d.Viewer
        • example
        • creation
        • properties
        • methods
      • Popup
        • example
        • properties
        • methods
      • ContextMenu
        • example
        • properties
      • Tooltip
        • example
        • properties
        • methods
      • MapSplit
        • examples
        • properties
        • methods
      • Compass
        • examples
        • properties
      • ZoomController
        • examples
        • properties
      • LocationBar
        • examples
        • properties
      • DistanceLegend
        • examples
        • properties
      • LoadingMask
        • examples
        • properties
      • Joint3d.SkyBox
        • example
        • creation
        • properties
      • Joint3d.GroundSkyBox
        • example
        • creation
        • properties
      • Joint3d.Position
        • example
        • creation
        • properties
        • methods
        • static methods
      • Joint3d.Color
        • example
        • properties
      • Joint3d.TilesetStyle
        • example
      • Joint3d.JulianDate
        • static methods
      • Joint3d.Rect
        • example
      • Joint3d.CallbackProperty
        • Joint3d.Parse
          • static methods
        • Joint3d.Transform
          • static methods
        • Joint3d.CoordTransform
          • static methods
        • Joint3d.Math
          • static methods
        • Joint3d.Util
          • static methods
        • Joint3d.DomUtil
          • static methods
      • zh
      • base
      2022-01-10
      目录

      基础构成

      # 基础构成

      # 命名空间

      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
      Copyright © 2021-2022 厦门集恩图造信息科技股份有限公司
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式