首页 / 浏览问题 / WebGIS / 问题详情
S3MTilesLayer设置
15EXP 2022年01月04日
现在为了解决webgl场景视角外模型重复加载的问题,我设置了clearMemoryImmediately属性为false,但仍未解决问题,现在想问是不是S3MTilesLayer的设置问题,但是我没找到S3MTilesLayer是在哪里设置,是index.JS里吗

1个回答

你好,使用 clearMemoryImmediately 需要设置Cesium.MemoryManager.setCacheSize() 缓存空间大小 ,具体可以在帮助文档搜索

MemoryManager查看详情

6,077EXP 2022年01月04日
MemoryManager查看详情

这个在哪里看
有链接吗

http://support.supermap.com.cn:8090/webgl/web/apis/3dwebgl.html 这是帮助文档链接,进去之后搜索 MemoryManager

/*加载单个模型*/
function loadMode(model) {
	var url = model["sceneUrl"];
	var name = model["name"];
	var dataurl = model["datasets"];

	var destionation;
	if (model["x"] != undefined) {
		destionation = new Cesium.Cartesian3.fromDegrees(parseFloat(model["x"]), parseFloat(model["y"]), parseFloat(model[
			"z"]));
	}
	centerposition = destionation;

	if (url != null && url.length != 0) {
		if (urlsadded.indexOf(url) == -1) {
			var promise = viewer.scene.open(url);
			Cesium.when(promise, function (layers) {
				//设置相机位置、方向,定位至模型	
				layers_all = layers;
				urlsadded.push(url);
				layersadded[name] = layers;
				if (model["x"] != undefined) {
					flytoposition(model);
				}
				for (var i = 0; i < layers.length; i++) {
					layer[i].visible = true;
					layers[i].clearMemoryImmediately = false;
				}

			});
		} else {
			setLayersVisible(dataurl, name, true);
			if (model["x"] != undefined) {
				flytoposition(model);
			}
		}
	}
}

现在我是用open()的方法直接载入模型的,但是我也设置了clearMemoryImmediately,你看是不是open这个方法不行,一定要用S3MTilesLayer方法调用模型才能实行不清除内存的效果

open和 S3MTilesLayer 都可以使用 clearMemoryImmediately
但是现在我这样写,每次滚轮缩放后只要有模型不在视口内,之后都要重新加载一次
我没有看到你这边设置了 Cesium.MemoryManager.setCacheSize() 呢

能不能帮我看看加在哪个位置crying 然后参数我该设置多少,有上限吗

加代码的时候,我没有能调用到.MemoryManager,会不会是软件版本问题
现在我的iserver是9D,iclient也是9d
...