浏览代码

add raster tile layer

tags/3.2.0
cavencj 2 年前
父节点
当前提交
b35ea6698d

+ 60
- 55
examples/baselayer/amap_no_offset.html 查看文件

@@ -1,63 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>dc-example</title>
<script src="/libs/dc-sdk/dc.min.js"></script>
<link href="/libs/dc-sdk/dc.min.css" type="text/css" rel="stylesheet" />
<link href="../index.css" type="text/css" rel="stylesheet" />
</head>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>dc-example</title>
<script src='/libs/dc-sdk/dc.min.js'></script>
<link href='/libs/dc-sdk/dc.min.css' type='text/css' rel='stylesheet'>
<link href='../index.css' type='text/css' rel='stylesheet'>
</head>
<body>
<div id="viewer-container" class="viewer-container"></div>

<body>
<div id="viewer-container" class="viewer-container"></div>
<script>
let viewer = undefined
function initViewer() {
viewer = new DC.Viewer('viewer-container')
let baseLayer = DC.ImageryLayerFactory.createImageryLayer(
DC.ImageryType.AMAP,
{
crs: 'WGS84',
}
)
viewer.addBaseLayer(baseLayer, {
iconUrl: '../assets/icon/elec.png',
name: '电子',
})

<script>
let viewer = undefined
function initViewer() {
viewer = new DC.Viewer('viewer-container')
let baseLayer = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,
{
crs:'WGS84'
}
)
viewer.addBaseLayer(baseLayer, {
iconUrl: '../assets/icon/elec.png',
name: '电子'
})

let baseLayer_img = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{
style: 'img',
crs:'WGS84'
})
viewer.addBaseLayer(baseLayer_img, {
iconUrl: '../assets/icon/img.png',
name: '影像'
})
let baseLayer_img = DC.ImageryLayerFactory.createImageryLayer(
DC.ImageryType.AMAP,
{
style: 'img',
crs: 'WGS84',
}
)
viewer.addBaseLayer(baseLayer_img, {
iconUrl: '../assets/icon/img.png',
name: '影像',
})

let baseLayer_cva = DC.ImageryLayerFactory.createImageryLayer(DC.ImageryType.AMAP,{
style: 'cva',
crs:'WGS84'
})
viewer.addBaseLayer([baseLayer_img, baseLayer_cva], {
iconUrl: '../assets/icon/img.png',
name: '影像+注记'
})
let baseLayer_cva = DC.ImageryLayerFactory.createImageryLayer(
DC.ImageryType.AMAP,
{
style: 'cva',
crs: 'WGS84',
}
)
viewer.addBaseLayer([baseLayer_img, baseLayer_cva], {
iconUrl: '../assets/icon/img.png',
name: '影像+注记',
})

// let layer = new DC.TilesetLayer('layer')
// viewer.addLayer(layer)
// let tileset = new DC.Tileset(
// '//resource.dvgis.cn/data/3dtiles/dayanta/tileset.json'
// )
// tileset.setHeight(-420)
// layer.addOverlay(tileset)
// viewer.flyTo(tileset)

}
DC.ready({
baseUrl:'../libs/dc-sdk/resources/'
}).then(initViewer)
</script>
</body>
// let layer = new DC.TilesetLayer('layer')
// viewer.addLayer(layer)
// let tileset = new DC.Tileset(
// '//resource.dvgis.cn/data/3dtiles/dayanta/tileset.json'
// )
// tileset.setHeight(-420)
// layer.addOverlay(tileset)
// viewer.flyTo(tileset)
}
DC.ready({
baseUrl: '../libs/dc-sdk/resources/',
}).then(initViewer)
</script>
</body>
</html>

+ 21
- 23
src/modules/exts/BaseLayerPicker.js 查看文件

@@ -3,7 +3,7 @@
*/

import { Cesium } from '../../namespace'
const { EllipsoidTerrainProvider, ImageryLayer } = Cesium
const { ImageryLayer } = Cesium

class BaseLayerPicker {
constructor(options) {
@@ -20,31 +20,29 @@ class BaseLayerPicker {
if (!imageryLayer || !imageryLayer.layers) {
new Error('imagery format error')
}
let imageryLayers = this._globe.imageryLayers
if (!this._selectedImageryLayer) {
for (let i = imageryLayer.layers.length - 1; i >= 0; i--) {
let layer = imageryLayer.layers[i]
if (layer) {
imageryLayers.add(
ImageryLayer.fromProviderAsync(layer, imageryLayer.options),
0
)
}
}
} else if (

if (
this._selectedImageryLayer &&
imageryLayer.id === this._selectedImageryLayer.id
) {
return
}

if (
this._selectedImageryLayer &&
imageryLayer.id !== this._selectedImageryLayer.id
) {
imageryLayers.removeAll()
for (let i = imageryLayer.layers.length - 1; i >= 0; i--) {
let layer = imageryLayer.layers[i]
if (layer) {
imageryLayers.add(
ImageryLayer.fromProviderAsync(layer, imageryLayer.options),
0
)
}
for (let i = 0; i < this._selectedImageryLayer.cache.length; i++) {
this._globe.imageryLayers.remove(this._selectedImageryLayer.cache[i])
}
imageryLayer.cache = []
}

for (let i = imageryLayer.layers.length - 1; i >= 0; i--) {
let layer = imageryLayer.layers[i]
let imagery = ImageryLayer.fromProviderAsync(layer, imageryLayer.options)
layer && this._globe.imageryLayers.add(imagery, 0)
imageryLayer.cache = [imagery]
}
this._selectedImageryLayer = imageryLayer
}
@@ -70,7 +68,7 @@ class BaseLayerPicker {
this._imageryLayers.push({
id: `imagery-no-${this._count}`,
layers: imageryLayers,
options: options,
cache: [],
})
return this
}

+ 1
- 0
src/modules/index.js 查看文件

@@ -38,6 +38,7 @@ export {
KmlLayer,
LabelLayer,
PrimitiveLayer,
RasterTileLayer,
TilesetLayer,
VectorLayer,
} from './layer'

+ 5
- 1
src/modules/layer/Layer.js 查看文件

@@ -90,6 +90,8 @@ class Layer {
} else {
this._viewer.scene.primitives.add(this._delegate)
}
} else if (this._delegate instanceof Cesium.ImageryLayer) {
this._viewer.imageryLayers.add(this._delegate)
} else {
this._viewer.dataSources.add(this._delegate)
}
@@ -115,7 +117,9 @@ class Layer {
} else {
this._viewer.scene.primitives.remove(this._delegate)
}
} else if (this._delegate.then) {
} else if (this._delegate instanceof Cesium.ImageryLayer) {
this._viewer.imageryLayers.remove(this._delegate)
} else if (this._delegate instanceof Promise) {
this._delegate.then((dataSource) => {
dataSource.entities.removeAll()
})

+ 1
- 0
src/modules/layer/index.js 查看文件

@@ -21,6 +21,7 @@ export { default as HtmlLayer } from './type/HtmlLayer'
export { default as KmlLayer } from './type/KmlLayer'
export { default as LabelLayer } from './type/LabelLayer'
export { default as PrimitiveLayer } from './type/PrimitiveLayer'
export { default as RasterTileLayer } from './type/RasterTileLayer'
export { default as TilesetLayer } from './type/TilesetLayer'
export { default as TopoJsonLayer } from './type/TopoJsonLayer'
export { default as VectorLayer } from './type/VectorLayer'

+ 23
- 0
src/modules/layer/type/RasterTileLayer.js 查看文件

@@ -0,0 +1,23 @@
/**
* @Author : Caven Chen
*/

import { Cesium } from '../../../namespace'
import State from '../../state/State'
import Layer from '../Layer'

class RasterTileLayer extends Layer {
constructor(id, provider, options) {
super(id)
this._delegate = Cesium.ImageryLayer.fromProviderAsync(provider, options)
this._state = State.INITIALIZED
}

get type() {
return Layer.getLayerType('raster-tile')
}
}

Layer.registerType('raster-tile')

export default RasterTileLayer

正在加载...
取消
保存