|
|
преди 2 години | |
|---|---|---|
| .. | ||
| README.md | преди 2 години | |
DC
DC.Cesium
Cesium 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 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 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.
Framework version number
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 :::
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 collection for third-party libraries
Using third-party modules or frameworks in DC frameworks
let plugin = {
install: (DC) => {},
}
DC.use(plugin)
Adding additional properties or functions to the DC
let comp = {
a: 'b',
}
DC.mixin(comp)
DC.a // b
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)
})
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)
})
Framework internal default constants
::: warning Please use the default constants for development :::
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
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
DC.AnalysisType.CONTOUR_LINE
DC.AnalysisType.SHADOWS
DC.AnalysisType.SIGHT_CIRCLE
DC.AnalysisType.SIGHT_LINE
DC.AnalysisType.VIEWSHED
DC.MouseMode.LEFT_MIDDLE
DC.MouseMode.LEFT_RIGHT
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
DC.TerrainType.NONE
DC.TerrainType.XYZ
DC.TerrainType.GOOGLE
DC.TerrainType.ARCGIS
DC.TerrainType.VR
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
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
DC.TrackViewMode.FP
DC.TrackViewMode.TP
DC.TrackViewMode.TRACKED
DC.TrackViewMode.FREE
3D scene primary interface to build 3D scenes in a given DivId, also available as DC.World
<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. :::
constructor(id,[options])
{String} id:divId{Object} optionsviewer//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
}
{Element} dcContainer:custom container readonly{Object} scene readonlyScene{Object} camerareadonlyCamera{Element} canvasreadonly{Object} clockClock{Object} dataSourcesDataSourceCollection{Object} imageryLayersImageryLayerCollection{Object} entitiesEntityCollection{Popup} popupreadonly{ContextMenu} contextMenureadonly{Tooltip} tooltipreadonly{MapSplit} mapSplitreadonly{Compass} compassreadonly{ZoomController} zoomControllerreadonly{LocationBar} locationBarreadonly{DistanceLegend} distanceLegendreadonly{LoadingMask} loadingMaskreadonly{Position} cameraPositionreadonly{Number} resolutionreadonly{Number} levelreadonly{Rect} viewBoundsreadonlysetOptions(options)
{Object} options:属性对象this// 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)
{Number} min:min angel{Number} max:max angelthischangeSceneMode(sceneMode, [duration])
{Number} sceneMode: 2:2D,3:3D,2.5:2.5D{Number} durationthischangeMouseMode(mouseMode)
{Number} mouseMode, Refer to:DC.MouseModethisaddBaseLayer(baseLayers,[options])
{baseLayer|Array<baseLayer>} baseLayers{Object} optionsthis//options
{
"name": "map",
"iconUrl": "../preview.png"
}
changeBaseLayer(index)
{Number} indexthisgetImageryLayerInfo(windowPosition)
{Object} windowPositionpromiseaddTerrain(terrain)
{Terrain} terrainthischangeTerrain(index)
{Number} indexthisremoveTerrain()
thisaddLayerGroup(layerGroup)
{LayerGroup} layerGroupthisremoveLayerGroup(layerGroup)
{LayerGroup} layerGroupthisgetLayerGroup(id)
{String} idlayerGroupaddLayer(layer)
{Layer} layerthisremoveLayer(layer)
{Layer} layerthisgetLayer(id)
{String} id:layer idlayergetLayers()
layereachLayer(callback, context)
{Function} callback{Object} contextthis viewer.eachLayer((layer) => {})
flyTo(target,[duration])
{VectorLayer|Overlay} target{Number} durationthiszoomTo(target)
{VectorLayer|Overlay} targetthisflyToPosition(position, [completeCallback], [duration])
{Position} position{Function} completeCallback{Number} durationthiszoomToPosition(position, [completeCallback])
{DC.Position} position{Function} completeCallbackthisflyToBounds(bounds,{heading,pitch,roll}, completeCallback, duration)
{String|Array} bounds format:[minX,minY,maxX,maxY]{Object} hpr{Function} completeCallback{Number} durationthiszoomToBounds(bounds,{heading,pitch,roll}, completeCallback)
{String|Array} bounds format:[minX,minY,maxX,maxY]{Object} hpr{Function} completeCallbackthison(type, callback, [context])
{Object} type{Function} callback{Object} contextthisonce(type, callback, [context])
{Object} type{Function} callback{Object} contextthisoff(type, callback, [context])
{Object} type{Function} callback{Object} contextthisdestroy()
thisexportScene([name])
{String} namethisuse(plugin)
{Object} pluginthis let plugin = {
install: (viewer) => {},
}
viewer.use(plugin)
let popup = viewer.popup
popup.setContent('<div></div>')
{String} statereadonly{Object} configwriteOnly{
"position": "center", // center,left ,right
"customClass": "custom" // Add a custom Css class name to the popup, separating multiple names with spaces
}
setPosition(position)
{Cartesian3} position: World CoordinatesthissetContent(content)
{String|Element} contentthissetWrapper(wrapper)
{Element} wrapper(Templates for MVVM frameworks in general)thisshowAt(position, content)
{Cartesian3} position{String|Element} contentthishide()
thislet 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).
{Boolean} enable{String} statereadonly{Array} DEFAULT_MENU:writeOnlylet tooltip = viewer.tooltip
tooltip.enable = true
tooltip.showAt({ x: 100, y: 100 }, 'test')
{Boolean} enable{String} state readonlyshowAt(position,content)
{Cartesian2} position: Screen Coordinates{String|Element} contentthislet baseLayer_elc = DC.ImageryLayerFactory.createGoogleImageryLayer()
viewer.mapSplit.enable = true
viewer.mapSplit.addBaseLayer(baseLayer_elc, -1)
{Boolean} enable{String} statereadonlyaddBaseLayer(baseLayer,splitDirection)
{BaseLayer} baseLayer{Number} splitDirection,-1:left,0:none,1:rightthisviewer.compass.enable = true
{Boolean} enable{String} state readonlyviewer.zoomController.enable = true
{Boolean} enable{String} statereadonlyviewer.locationBar.enable = true
{Boolean} enable{String} state readonlyviewer.distanceLegend.enable = true
{Boolean} enable{String} state,readonlyviewer.loadingMask.enable = true
{Boolean} enable{String} statereadonlyscene.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',
},
})
constructor(id)
{Object} optionsskyBox//options(optional)
{
"sources": {},
"show": true
}
{Object} sources{Boolean} showscene.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',
},
})
constructor(id)
{Object} optionsgroundSkyBox//options(optional)
{
"sources": {},
"show": true,
"offsetAngle": 0
}
{Object} sources{Boolean} show{Number} offsetAnglelet 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 })
constructor(lng,lat,[alt],[heading],[pitch],[roll])
{Number} lng{Number} lat{Number} alt{Number} heading{Number} pitch{Number} rollposition{Number} lng{Number} lat{Number} alt{Number} heading{Number} pitch{Number} rollserialize()
stringcopy()
positiontoString()
stringtoArray()
arraytoObject()
ObjectfromString(str)
{String} strpositionfromArray(array)
{Array} arraypositionfromObject(obj)
{Object} objpositiondeserialize(valStr)
{String} valStrpositionlet red = DC.Color.RED
{Color} RED{Color} YELLOW{Color} WHITE{Color} GREENlet style = new DC.TilesetStyle()
style.color = {
conditions: [
['${floor} >= 5', 'rgb(198, 106, 11)'],
['true', 'rgb(127, 59, 8)'],
],
}
let date = DC.JulianDate.now()
now()
datefromDate(date)
{Date} datedatelet r = DC.Rect.fromDegrees(10, 20, 12, 31)
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
}),
})
Coordinate resolution tool class, can be abbreviated as DC.P
let position = DC.P.parsePosition('123,32,0')
parsePosition(position)
{String|Array|Position} positionpositionparsePositions(positions)
{String|Array} positionsarrayparsePointCoordToArray(position)
{String|Position} positionarrayparsePolylineCoordToArray(positions)
{String|Array} positionsarrayparsePolygonCoordToArray(positions,loop)
{String|Array} positions{Boolean} looparrayCoordinate conversion tool class , can be abbreviated DC.T
let cartesian3 = DC.T.transformWGS84ToCartesian(new DC.Position(120, 20))
transformCartesianToWGS84(cartesian)
{Cartesian3} cartesianpositiontransformWGS84ToCartesian(position)
{Position} positioncartesiantransformWGS84ToCartographic(position)
{Position} positioncartographictransformCartesianArrayToWGS84Array(cartesianArr)
{Array<cartesian3>} cartesianArrarraytransformWGS84ArrayToCartesianArray(WGS84Arr)
{Array<cartesian3>} WGS84ArrarraytransformWGS84ToMercator(position)
{Position} positionpositiontransformMercatorToWGS84(position)
{Position} positionpositiontransformWindowToWGS84(position,viewer)
{Object} position,format:{x:1,y:1}{Viewer} viewerpositiontransformWGS84ToWindow(position,viewer)
{Position} position{Viewer} viewerObjectChina Coordinate Conversion Tool
let point = DC.CoordTransform.BD09ToGCJ02(120, 20)
BD09ToGCJ02(lng, lat)
{Number} lng{Number} lat[]GCJ02ToBD09(lng, lat)
{Number} lng{Number} lat[]WGS84ToGCJ02(lng, lat)
{Number} lng{Number} lat[]GCJ02ToWGS84(lng, lat)
{Number} lng{Number} lat[]area(positions)
{Array<Position>} positionsnumberbounds(positions , expand)
{Array<Position>} positions{Number}} expand:0~1objectmid(startPosition , endPosition)
{Position} startPosition{Position} endPositionpositioncenter(positions)
{Array<Position>} positionspositiondistance(positions)
{Array<Position>} positionsnumberheading(startPosition, endPosition)
{Position} startPosition{Position} endPositionnumberparabola(startPosition, endPosition,height,count)
{Position} startPosition{Position} endPosition{Number} height{Number} countArrayuuid([prefix])
{String} prefixstringmerge(dest, …sources)
{Object} dest{Object|Array} sourcesobjectemptyImageUrl()
debounce(fn,delay)
throttle(fn,delay)
get(id)
{String} idElementcreate(tagName, className, [container])
{String} tagName{String} className{Element} [container]ElementaddClass(el, name)
{Element} el{String} classNameremoveClass(el, name)
{Element} el{String} classNameaddClass(el, name)
{Element} el{String} classNamecreateSvg(width, height, path, [container])
{Number} width{Number} height{String} path{Element} [container]svgparseDom(domStr, [withWrapper], [className])
{String} domStr{Boolean} withWrapper{String} classNameElement | NodesenterFullscreen(el)
{Element} elexitFullscreen()
createVideo(url, className, [container])
{String} url{String} className{Element} [container]Element | Nodes