Skip to content

Commit 2b3843d

Browse files
author
潘卓然Y7000P
committed
新增cesiumjs的图层基类结构&管理类图层结构
1 parent c8c9c4c commit 2b3843d

18 files changed

Lines changed: 3191 additions & 533 deletions

src/cesiumjs/layer/BaseLayer.js

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,37 @@ export default class BaseLayer {
1313
this._viewer = Cesium.defaultValue(option.viewer, undefined);
1414
}
1515

16+
/**
17+
* 当前椭球
18+
* @memberof BaseLayer.protype
19+
* @type {Ellipsoid}
20+
* @readonly
21+
*
22+
*/
23+
get ellipsoid() {
24+
return this._viewer.scene.globe.ellipsoid;
25+
}
26+
27+
/**
28+
* 视图
29+
* @memberof BaseLayer.prototype
30+
* @type {Viewer}
31+
* @readonly
32+
*/
1633
get viewer() {
1734
return this._viewer;
1835
}
1936

37+
/**
38+
* 场景
39+
* @memberof BaseLayer.prototype
40+
* @type {Scene}
41+
* @readonly
42+
*/
43+
get scene() {
44+
return this._viewer.scene;
45+
}
46+
2047
/**
2148
* 定位到M3D图层对象
2249
* @param {Object} layer 图层对象
@@ -27,7 +54,6 @@ export default class BaseLayer {
2754
boundingSphere,
2855
new Cesium.HeadingPitchRange(0.0, -0.5, boundingSphere.radius)
2956
);
30-
debugger;
3157
this.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
3258
}
3359

@@ -74,14 +100,41 @@ export default class BaseLayer {
74100
* @param {Object} gridlayers 网格图层
75101
*/
76102
removeGridInfo(gridlayers) {
77-
debugger;
78103
let imagelayers = this.viewer.imageryLayers;
79104
if (imagelayers !== null && imagelayers !== undefined) {
80105
if (imagelayers.contains(gridlayers)) {
81106
imagelayers.remove(gridlayers, true);
82107
}
83108
}
84109
}
110+
111+
/**
112+
* 通用删除影像图层
113+
* @param {imagelayer} google等图层,其为addImageryProvider返回的值
114+
* @param {boolean} isdestroy,是否销毁图层 在图层需要频繁切换的情况下,isdestroy最好取false
115+
* @example
116+
* let tilelayer = tile.appendGoogleMap({ptype:'m@207000000'});
117+
* tile.removeImageLayer(tilelayer, true);
118+
*/
119+
removeImageLayer(imagelayer, isdestroy) {
120+
let imagelayers = this.viewer.imageryLayers;
121+
if (imagelayers !== null && imagelayers !== undefined) {
122+
if (imagelayers.contains(imagelayer)) {
123+
imagelayers.remove(imagelayer, isdestroy);
124+
}
125+
}
126+
}
127+
128+
/**
129+
* 清空影像图层,包括地球表面
130+
* @param {boolean} isdestroy,是否销毁图层
131+
*/
132+
removeAllImageLayers(isdestroy) {
133+
var imagelayers = this.viewer.imageryLayers;
134+
if (imagelayers !== null && imagelayers !== undefined) {
135+
imagelayers.removeAll(isdestroy);
136+
}
137+
}
85138
}
86139

87140
CesiumZondy.Layer.BaseLayer = BaseLayer;

src/cesiumjs/layer/M3DLayer.js

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export default class M3DLayer extends BaseLayer {
3131
* @param {Boolean} [options.loaded = function] 回调函数
3232
* @param {DefaultProxy} [options.proxy = defaultProxy] 代理
3333
* @returns m3d层对象
34-
* @see{@link }
3534
* @example
3635
* function callBackfunction(layer){
3736
* console.log(layer)
@@ -119,6 +118,7 @@ export default class M3DLayer extends BaseLayer {
119118
if (!Cesium.defined(url)) {
120119
return new Cesium.DeveloperError('必须指定url');
121120
}
121+
options = Cesium.defaultValue(options , {});
122122
let synchronous = true;
123123
let baseUrl = url;
124124
let resource;
@@ -157,6 +157,7 @@ export default class M3DLayer extends BaseLayer {
157157
options
158158
);
159159
docLayers.push(m3d);
160+
m3d.readyPromise.then(_callBack);
160161
}
161162
}
162163
}
@@ -194,6 +195,64 @@ export default class M3DLayer extends BaseLayer {
194195
return docLayers;
195196
}
196197

198+
/**
199+
* 添加m3d服务图层(mongodb)
200+
* @param {String} url 服务地址(发布的m3d缓存服务)
201+
* @param {Object} options
202+
* @param {Boolean} [options.autoReset = true]
203+
* @param {Boolean} [options.loaded = function]
204+
* @param {DefaultProxy} 代理
205+
* @example
206+
* let view = { viewer: window.globe.viewer };
207+
let m3d = new M3DLayer(view);
208+
function callBackfunction(layer){
209+
}
210+
m3d.appendM3dLayer('http://localhost:6163/igs/rest/g3d/cache/jg', {
211+
autoReset:false
212+
loaded:callBackfunction
213+
});
214+
*/
215+
appendM3dCacheFromMangoDB(baseUrl, options) {
216+
options = Cesium.defaultValue(options , {});
217+
let proxy;
218+
let autoReset = true;
219+
if (Cesium.defined(options)) {
220+
if (Cesium.defined(options.proxy)) {
221+
proxy = new Cesium.DefaultProxy(options.proxy); //不放在defaultValue中 new 会影响性能
222+
}
223+
Cesium.defaultValue(options.proxy, undefined);
224+
autoReset = Cesium.defaultValue(options.autoReset, true);
225+
}
226+
var resource = new Cesium.Resource({
227+
url: baseUrl + '/GetCacheInfo',
228+
proxy: proxy
229+
});
230+
var layer = [];
231+
var dataUrlCache = baseUrl + '/GetDataStreams?';
232+
//处理版本信息判断是否清除缓存
233+
var m3dLayrCache = new Cesium.MapGISM3DSet({
234+
url: dataUrlCache,
235+
igserver: true
236+
});
237+
layer = this.viewer.scene.primitives.add(m3dLayrCache);
238+
resource.fetchJson().then(json=> {
239+
layer.readyPromise.then(function(layer) {
240+
if (autoReset) {
241+
var boundingSphere = layer.boundingSphere;
242+
that.viewer.camera.viewBoundingSphere(boundingSphere, new Cesium.HeadingPitchRange(0.0, -0.5,
243+
boundingSphere.radius));
244+
that.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
245+
if (typeof options.loaded === 'function') {
246+
options.loaded(layer);
247+
}
248+
}
249+
250+
});
251+
});
252+
253+
return layer;
254+
}
255+
197256
/**
198257
* 设置模型层按方向移动
199258
* @param {param} layer m3d图层对象
@@ -205,7 +264,7 @@ export default class M3DLayer extends BaseLayer {
205264
* let dir = new Cesium.Cartesian3(0.0, 1.0, 1.0); 分别表示xyz方向
206265
* m3d.setM3dLayerMovement(tilelayer[0],dir,10.0)
207266
*/
208-
setM3dLayerMovement(layer, direction, distance, option) {
267+
setM3dLayerMovement(layer, direction, distance, options) {
209268
if (
210269
undefined === layer ||
211270
undefined === direction ||

0 commit comments

Comments
 (0)