# Base 🌎
# Namespace
DC
DC is the default namespace for the framework.When developing with this framework, you need to start with DC.
WARNING
Try not to use DC as variable names or namespaces when developing to avoid the framework not working properly.
Cesium
Cesium (opens new window) is a world-class ES6 open source product for 3D GIS. The product is convenient for individuals or teams to quickly build a plug-in-free 3D GIS web application, in terms of performance, accuracy, rendering quality, cross-platform are very good guarantee. If you need Cesium's internal interface during development, you can get Cesium through const { Cesium } = DC.Namespace
.
mapv
Mapv (opens new window) is a geographic information visualization open source library , can be used to display a large amount of geographic information data , point , line , surface data , each data also has different types of display , such as direct hit points , heat map , grid , aggregation and other ways to display data . If you need Mapv's internal interface during development, you can get Mapv through const { mapv } = DC.Namespace
.
turf
Turf (opens new window) is a JavaScript library for spatial analysis. It includes traditional spatial operations, helper functions for creating GeoJSON data, and data classification and statistics tools. Turf can be added to your website as a client-side plugin, or you can run Turf server-side with Node.js . If you need Turf's internal interface during development, you can get Turf through const { turf } = DC.Namespace
.
# Global Properties
# version
Framework version number
# accessToken
Used to remove logo and console output information.
does not affect the use of the framework
DC.accessToken = '<your access token>'
TIP
Token requests can be made via http://dvgis.cn/#/price (opens new window)
# baseUrl
Path to set the static resource files associated with
Cesium
:Assets
,Workers
,ThirdParty
,Widgets
DC.baseUrl = '. /libs/dc-sdk/resources/'
DC.ready(() => {})
WARNING
The baseUrl
setting needs to be set before the ready
function, otherwise the default setting of . /libs/dc-sdk/resources/
# Namespace
Namespace collection for third-party libraries
# Global Methods
# use
Using third-party modules or frameworks in DC frameworks
let plugin = {
install: (DC) => {},
}
DC.use(plugin)
# mixin
Adding additional properties or functions to the DC
let comp = {
a: 'b',
}
DC.mixin(comp)
DC.a // b
# init
This function is used to initialize Cesium, the default Cesium is the latest version, if you use a custom version of Cesium, you can modify the reference to Cesium before the DC loads other modules, thus replacing Cesium in the entire DC system
(use with caution)
DC.init(() => {
DC.Namespace['Cesium'] = '<自定义Cesium>'
DC.use(DcCore)
})
# ready
The main entrance to the framework, you must start with this when using the framework, otherwise you cannot build 3D scenes
global.DC = DC
DC.use(DcCore)
DC.ready(() => {
let viewer = new DC.Viewer(divId)
})
# Constants
Framework internal default constants
WARNING
Please use the default constants for development
# MouseEventType
DC.MouseEventType.LEFT_DOWN
DC.MouseEventType.LEFT_UP
DC.MouseEventType.CLICK
DC.MouseEventType.RIGHT_DOWN
DC.MouseEventType.RIGHT_UP
DC.MouseEventType.RIGHT_CLICK
DC.MouseEventType.DB_CLICK
DC.MouseEventType.MOUSE_MOVE
DC.MouseEventType.WHEEL
DC.MouseEventType.MOUSE_OVER
DC.MouseEventType.MOUSE_OUT
# SceneEventType
DC.SceneEventType.CAMERA_MOVE_END
DC.SceneEventType.CAMERA_CHANGED
DC.SceneEventType.PRE_UPDATE
DC.SceneEventType.POST_UPDATE
DC.SceneEventType.PRE_RENDER
DC.SceneEventType.POST_RENDER
DC.SceneEventType.MORPH_COMPLETE
DC.SceneEventType.CLOCK_TICK
DC.SceneEventType.RENDER_ERROR
# AnalysisType
DC.AnalysisType.CONTOUR_LINE
DC.AnalysisType.SHADOWS
DC.AnalysisType.SIGHT_CIRCLE
DC.AnalysisType.SIGHT_LINE
DC.AnalysisType.VIEWSHED
# MouseMode
DC.MouseMode.LEFT_MIDDLE
DC.MouseMode.LEFT_RIGHT
# ImageryType
DC.ImageryType.ARCGIS
DC.ImageryType.SINGLE_TILE
DC.ImageryType.WMS
DC.ImageryType.WMTS
DC.ImageryType.XYZ
DC.ImageryType.COORD
DC.ImageryType.GRID
DC.ImageryType.MAPBOX
DC.ImageryType.MAPBOX_STYLE
DC.ImageryType.TMS
DC.ImageryType.AMAP
DC.ImageryType.BAIDU
DC.ImageryType.GOOGLE
DC.ImageryType.TDT
DC.ImageryType.TENCENT
# TerrainType
DC.TerrainType.NONE
DC.TerrainType.XYZ
DC.TerrainType.GOOGLE
DC.TerrainType.ARCGIS
DC.TerrainType.VR
# LayerType
DC.LayerType.VECTOR
DC.LayerType.PRIMITIVE
DC.LayerType.TILESET
DC.LayerType.HTML
DC.LayerType.GEOJSON
DC.LayerType.CLUSTER
DC.LayerType.CAMERA_VIDEO
DC.LayerType.PLANE_VIDEO
DC.LayerType.KML
DC.LayerType.CZML
DC.LayerType.HEAT
DC.LayerType.MAPV
DC.LayerType.CHART
# OverlayType
DC.OverlayType.POINT
DC.OverlayType.POLYLINE
DC.OverlayType.POLYGON
DC.OverlayType.MODEL
DC.OverlayType.BILLBOARD
DC.OverlayType.RECTANGLE
DC.OverlayType.CIRCLE
DC.OverlayType.LABEL
DC.OverlayType.TILESET
DC.OverlayType.BOX
DC.OverlayType.CORRIDOR
DC.OverlayType.CYLINDER
DC.OverlayType.ELLIPSE
DC.OverlayType.ELLIPSOID
DC.OverlayType.PLANE
DC.OverlayType.POLYLINE_VOLUME
DC.OverlayType.WALL
DC.OverlayType.DYNAMIC_BILLBOARD
DC.OverlayType.DYNAMIC_MODEL
DC.OverlayType.CUSTOM_BILLBOARD
DC.OverlayType.CUSTOM_LABEL
DC.OverlayType.ATTACK_ARROW
DC.OverlayType.DOUBLE_ARROW
DC.OverlayType.FINE_ARROW
DC.OverlayType.GATHERING_PLACE
DC.OverlayType.TAILED_ATTACK_ARROW
DC.OverlayType.BILLBOARD_PRIMITIVE
DC.OverlayType.DIFFUSE_WALL_PRIMITIVE
DC.OverlayType.ELEC_ELLIPSOID_PRIMITIVE
DC.OverlayType.FLOW_LINE_PRIMITIVE
DC.OverlayType.LABEL_PRIMITIVE
DC.OverlayType.MODEL_PRIMITIVE
DC.OverlayType.POINT_PRIMITIVE
DC.OverlayType.POLYLINE_PRIMITIVE
DC.OverlayType.SCAN_CIRCLE_PRIMITIVE
DC.OverlayType.TRAIL_LINE_PRIMITIVE
DC.OverlayType.WATER_PRIMITIVE
DC.OverlayType.VIDEO_PRIMITIVE
DC.OverlayType.CAMERA_VIDEO
DC.OverlayType.PLAN_VIDEO
# TrackViewMode
DC.TrackViewMode.FP
DC.TrackViewMode.TP
DC.TrackViewMode.TRACKED
DC.TrackViewMode.FREE
# DC.Viewer
3D scene primary interface to build 3D scenes in a given DivId, also available as DC.World
# example
<div id="viewer-container"></div>
let viewer = DC.Viewer('viewer-container')
global.viewer = viewer
WARNING
If you are using a MVVM framework like Vue, do not add viewer, layer, or overlay to the data model. Since the 3D scene will keep refreshing each frame, adding data to the data model will cause the browser to crash if it takes a long time.
# creation
constructor(id,[options])
- parameters
{String} id
:divId{Object} options
- returns
viewer
- parameters
//options(optional)
{
"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} dcContainer
:custom containerreadonly
{Object} scene
readonly
Scene (opens new window){Object} camera
readonly
Camera (opens new window){Element} canvas
readonly
{Object} clock
Clock (opens new window){Object} dataSources
DataSourceCollection (opens new window){Object} imageryLayers
ImageryLayerCollection (opens new window){Object} entities
EntityCollection (opens new window){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
{Number} level
readonly
{Rect} viewBounds
readonly
# methods
setOptions(options)
- parameters
{Object} options
:属性对象
- returns
this
- parameters
// options(optional)
{
"shadows": false,
"resolutionScale": 1,
"showAtmosphere": true,
"showSun": true,
"showMoon": true,
"enableFxaa": true,
"msaaSamples": 1,
"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 DC.Color(0, 0, 0.5, 1),
"filterColor": new DC.Color(0, 0, 0, 0),
"translucency": {
"enabled": false,
"backFaceAlpha": 1,
"backFaceAlphaByDistance": null,
"frontFaceAlpha": 1,
"frontFaceAlphaByDistance": null
}
},
"skyBox": {
"sources": {},
"show": true,
"offsetAngle": 0
}
}
setPitchRange(min,max)
- parameters
{Number} min
:min angel{Number} max
:max angel
- returns
this
- parameters
changeSceneMode(sceneMode, [duration])
- parameters
{Number} sceneMode
: 2:2D,3:3D,2.5:2.5D{Number} duration
- returns
this
- parameters
changeMouseMode(mouseMode)
- parameters
{Number} mouseMode
, Refer to:DC.MouseMode
- returns
this
- parameters
addBaseLayer(baseLayers,[options])
- parameters
{baseLayer|Array<baseLayer>} baseLayers
{Object} options
- returns
this
- parameters
//options
{
"name": "map",
"iconUrl": "../preview.png"
}
changeBaseLayer(index)
- parameters
{Number} index
- returns
this
- parameters
getImageryLayerInfo(windowPosition)
- parameters
{Object} windowPosition
- returns
promise
- parameters
addTerrain(terrain)
- parameters
{Terrain} terrain
- returns
this
- parameters
changeTerrain(index)
- parameters
{Number} index
- returns
this
- parameters
removeTerrain()
- returns
this
- returns
addLayerGroup(layerGroup)
- parameters
{LayerGroup} layerGroup
- returns
this
- parameters
removeLayerGroup(layerGroup)
- parameters
{LayerGroup} layerGroup
- returns
this
- parameters
getLayerGroup(id)
- parameters
{String} id
- returns
layerGroup
- parameters
addLayer(layer)
- parameters
{Layer} layer
- returns
this
- parameters
removeLayer(layer)
- parameters
{Layer} layer
- returns
this
- parameters
getLayer(id)
- parameters
{String} id
:layer id
- returns
layer
- parameters
getLayers()
- returns
layer
- returns
eachLayer(callback, context)
- parameters
{Function} callback
{Object} context
- returns
this
viewer.eachLayer((layer) => {})
- parameters
flyTo(target,[duration])
- parameters
{VectorLayer|Overlay} target
{Number} duration
- returns
this
- parameters
zoomTo(target)
- parameters
{VectorLayer|Overlay} target
- returns
this
- parameters
flyToPosition(position, [completeCallback], [duration])
- parameters
{Position} position
{Function} completeCallback
{Number} duration
- returns
this
- parameters
zoomToPosition(position, [completeCallback])
- parameters
{DC.Position} position
{Function} completeCallback
- returns
this
- parameters
flyToBounds(bounds,{heading,pitch,roll}, completeCallback, duration)
- parameters
{String|Array} bounds
format:[minX,minY,maxX,maxY]{Object} hpr
{Function} completeCallback
{Number} duration
- returns
this
- parameters
zoomToBounds(bounds,{heading,pitch,roll}, completeCallback)
- parameters
{String|Array} bounds
format:[minX,minY,maxX,maxY]{Object} hpr
{Function} completeCallback
- returns
this
- parameters
on(type, callback, [context])
- parameters
{Object} type
{Function} callback
{Object} context
- returns
this
- parameters
once(type, callback, [context])
- parameters
{Object} type
{Function} callback
{Object} context
- returns
this
- parameters
off(type, callback, [context])
- parameters
{Object} type
{Function} callback
{Object} context
- returns
this
- parameters
destroy()
- returns
this
- returns
exportScene([name])
- parameters
{String} name
- returns
this
- parameters
use(plugin)
- parameters
{Object} plugin
- returns
this
let plugin = { install: (viewer) => {}, } viewer.use(plugin)
- parameters
# Popup
# example
let popup = viewer.popup
popup.setContent('<div></div>')
# properties
{String} state
readonly
{Object} config
writeOnly
{
"position": "center", // center,left ,right
"customClass": "custom" // Add a custom Css class name to the popup, separating multiple names with spaces
}
# methods
setPosition(position)
- parameters
{Cartesian3} position
: World Coordinates
- returns
this
- parameters
setContent(content)
- parameters
{String|Element} content
- returns
this
- parameters
setWrapper(wrapper)
- parameters
{Element} wrapper
(Templates for MVVM frameworks in general)
- returns
this
- parameters
showAt(position, content)
- parameters
{Cartesian3} position
{String|Element} content
- returns
this
- parameters
hide()
- returns
this
- returns
# ContextMenu
# example
let contextMenu = viewer.contextMenu
contextMenu.enable = true
contextMenu.DEFAULT_MENU = [
{
label: '测试',
callback: (e) => {}, // e: windowPosition,position,surfacePosition,overlay
context: this,
},
] // Setting the default ContextMenu affects the global ContextMenu (use with caution).
# 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 }, 'test')
# properties
{Boolean} enable
{String} state
readonly
# methods
showAt(position,content)
- parameters
{Cartesian2} position
: Screen Coordinates{String|Element} content
- returns
this
- parameters
# MapSplit
# examples
let baseLayer_elc = DC.ImageryLayerFactory.createGoogleImageryLayer()
viewer.mapSplit.enable = true
viewer.mapSplit.addBaseLayer(baseLayer_elc, -1)
# properties
{Boolean} enable
{String} state
readonly
# methods
addBaseLayer(baseLayer,splitDirection)
- parameters
{BaseLayer} baseLayer
{Number} splitDirection
,-1:left,0:none,1:right
- returns
this
- parameters
# 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
# DC.SkyBox
# example
scene.skyBox = new DC.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)
- parameters
{Object} options
- returns
skyBox
- parameters
//options(optional)
{
"sources": {},
"show": true
}
# properties
{Object} sources
{Boolean} show
# DC.GroundSkyBox
# example
scene.skyBox = new DC.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)
- parameters
{Object} options
- returns
groundSkyBox
- parameters
//options(optional)
{
"sources": {},
"show": true,
"offsetAngle": 0
}
# properties
{Object} sources
{Boolean} show
{Number} offsetAngle
# DC.Position
# example
let position = new DC.Position(120, 22, 102)
let position1 = DC.Position.fromString('120,22,102')
let position2 = DC.Position.fromArray([120, 22, 102])
let position3 = DC.Position.fromObject({ lng: 120, lat: 22, height: 102 })
# creation
constructor(lng,lat,[alt],[heading],[pitch],[roll])
- parameters
{Number} lng
{Number} lat
{Number} alt
{Number} heading
{Number} pitch
{Number} roll
- returns
position
- parameters
# properties
{Number} lng
{Number} lat
{Number} alt
{Number} heading
{Number} pitch
{Number} roll
# methods
serialize()
- returns
string
- returns
copy()
- returns
position
- returns
toString()
- returns
string
- returns
toArray()
- returns
array
- returns
toObject()
- returns
Object
- returns
# static methods
fromString(str)
- parameters
{String} str
- returns
position
- parameters
fromArray(array)
- parameters
{Array} array
- returns
position
- parameters
fromObject(obj)
- parameters
{Object} obj
- returns
position
- parameters
deserialize(valStr)
- parameters
{String} valStr
- returns
position
- parameters
# DC.Color
# example
let red = DC.Color.RED
# properties
{Color} RED
{Color} YELLOW
{Color} WHITE
{Color} GREEN
# DC.TilesetStyle
# example
let style = new DC.TilesetStyle()
style.color = {
conditions: [
['${floor} >= 5', 'rgb(198, 106, 11)'],
['true', 'rgb(127, 59, 8)'],
],
}
Cesium3DTileStyle (opens new window)
# DC.JulianDate
let date = DC.JulianDate.now()
# static methods
now()
- returns
date
- returns
fromDate(date)
- parameters
{Date} date
- returns
date
- parameters
# DC.Rect
# example
let r = DC.Rect.fromDegrees(10, 20, 12, 31)
# DC.CallbackProperty
let position = new DC.Position(120, 20)
let point = new DC.Point(position)
let size = 0
point.setStyle({
pixelSize: new DC.CallbackProperty((time) => {
size += 1
if (size == 10) {
size = 0
}
return size
}),
})
CallbackProperty (opens new window)
# DC.Parse
Coordinate resolution tool class, can be abbreviated as DC.P
let position = DC.P.parsePosition('123,32,0')
# static methods
parsePosition(position)
- parameters
{String|Array|Position} position
- returns
position
- parameters
parsePositions(positions)
- parameters
{String|Array} positions
- returns
array
- parameters
parsePointCoordToArray(position)
- parameters
{String|Position} position
- returns
array
- parameters
parsePolylineCoordToArray(positions)
- parameters
{String|Array} positions
- returns
array
- parameters
parsePolygonCoordToArray(positions,loop)
- parameters
{String|Array} positions
{Boolean} loop
- returns
array
- parameters
# DC.Transform
Coordinate conversion tool class , can be abbreviated DC.T
let cartesian3 = DC.T.transformWGS84ToCartesian(new DC.Position(120, 20))
# static methods
transformCartesianToWGS84(cartesian)
- parameters
{Cartesian3} cartesian
- returns
position
- parameters
transformWGS84ToCartesian(position)
- parameters
{Position} position
- returns
cartesian
- parameters
transformWGS84ToCartographic(position)
- parameters
{Position} position
- returns
cartographic
- parameters
transformCartesianArrayToWGS84Array(cartesianArr)
- parameters
{Array<cartesian3>} cartesianArr
- returns
array
- parameters
transformWGS84ArrayToCartesianArray(WGS84Arr)
- parameters
{Array<cartesian3>} WGS84Arr
- returns
array
- parameters
transformWGS84ToMercator(position)
- parameters
{Position} position
- returns
position
- parameters
transformMercatorToWGS84(position)
- parameters
{Position} position
- returns
position
- parameters
transformWindowToWGS84(position,viewer)
- parameters
{Object} position
,format:{x:1,y:1}
{Viewer} viewer
- returns
position
- parameters
transformWGS84ToWindow(position,viewer)
- parameters
{Position} position
{Viewer} viewer
- returns
Object
- parameters
# DC.CoordTransform
China Coordinate Conversion Tool
let point = DC.CoordTransform.BD09ToGCJ02(120, 20)
# static methods
BD09ToGCJ02(lng, lat)
- parameters
{Number} lng
{Number} lat
- returns
[]
- parameters
GCJ02ToBD09(lng, lat)
- parameters
{Number} lng
{Number} lat
- returns
[]
- parameters
WGS84ToGCJ02(lng, lat)
- parameters
{Number} lng
{Number} lat
- returns
[]
- parameters
GCJ02ToWGS84(lng, lat)
- parameters
{Number} lng
{Number} lat
- returns
[]
- parameters
# DC.Math
# static methods
area(positions)
- parameters
{Array<Position>} positions
- returns
number
- parameters
bounds(positions , expand)
- parameters
{Array<Position>} positions
{Number}} expand
:0~1
- returns
object
- parameters
mid(startPosition , endPosition)
- parameters
{Position} startPosition
{Position} endPosition
- returns
position
- parameters
center(positions)
- parameters
{Array<Position>} positions
- returns
position
- parameters
distance(positions)
- parameters
{Array<Position>} positions
- returns
number
- parameters
heading(startPosition, endPosition)
- parameters
{Position} startPosition
{Position} endPosition
- returns
number
- parameters
parabola(startPosition, endPosition,height,count)
- parameters
{Position} startPosition
{Position} endPosition
{Number} height
{Number} count
- returns
Array
- parameters
# DC.Util
# static methods
uuid([prefix])
- parameters
{String} prefix
- returns
string
- parameters
merge(dest, ...sources)
- parameters
{Object} dest
{Object|Array} sources
- returns
object
- parameters
emptyImageUrl()
debounce(fn,delay)
throttle(fn,delay)
# DC.DomUtil
# static methods
get(id)
- parameters
{String} id
- returns
Element
- parameters
create(tagName, className, [container])
- parameters
{String} tagName
{String} className
{Element} [container]
- returns
Element
- parameters
addClass(el, name)
- parameters
{Element} el
{String} className
- parameters
removeClass(el, name)
- parameters
{Element} el
{String} className
- parameters
addClass(el, name)
- parameters
{Element} el
{String} className
- parameters
createSvg(width, height, path, [container])
- parameters
{Number} width
{Number} height
{String} path
{Element} [container]
- returns
svg
- parameters
parseDom(domStr, [withWrapper], [className])
- parameters
{String} domStr
{Boolean} withWrapper
{String} className
- returns
Element | Nodes
- parameters
enterFullscreen(el)
- parameters
{Element} el
- parameters
exitFullscreen()
createVideo(url, className, [container])
- parameters
{String} url
{String} className
{Element} [container]
- returns
Element | Nodes
- parameters