首页 / 浏览问题 / WebGIS / 问题详情
vue2.0 如何加载 s3mb 数据
51EXP 2024年05月09日

模型文件是 超图软件生成的 .scp 文件夹里有多个 .s3mb 文件,我当前工程是 vue2.0 的,希望以静态static 文件夹方式引入 原生 cesium 加载 超图这个模型,但是我引入

import S3MTilesLayer from './S3M_module/S3MTiles/S3MTilesLayer';

界面就卡死了。

请求帮助

补充代码

<template>
    <div id="cesiumContainer" style="width: 100%; height: 70vh;"></div>
</template>

<script>
import S3MTilesLayer from './S3M_module/S3MTiles/S3MTilesLayer';
export default {
    name: 'CesiumMap',
    mounted() {
        // 确保 Cesium 全局对象可用
        // if (typeof Cesium !== 'undefined') {
        //     const viewer = new Cesium.Viewer(this.$el, {
        //         imageryProvider: new Cesium.IonImageryProvider({ assetId: 2 }),
        //         baseLayerPicker: false,
        //         geocoder: false
        //     });
        // } else {
        //     console.error('Cesium is not loaded');
        // }

        let viewer = new Cesium.Viewer('cesiumContainer',{
        });
        let scene = viewer.scene;
        let layer = new S3MTilesLayer({
            context : scene._context,
            url: '.D:\\work\\eserver\\supermap-s3m-load\\s3m-spec\\S3M_SDK\\S3M_JS\\data\\CBD\\cbd.scp'
        });

        scene.primitives.add(layer);

        layer.readyPromise.then(function() {
            scene.camera.setView({
                destination : new Cesium.Cartesian3(-2181968.890329965, 4385313.17843029, 4072712.8241634783),
                orientation : {
                    heading : 3.1756648661534443,
                    pitch : -0.3715184468182904
                }
            });
        }).otherwise(function(error) {
            console.log(error);
        });

    }
}
</script>

1个回答

需求很简单,就是想把超图的模型预览一下。
51EXP 2024年05月09日
您好,s3m数据是不能直接用import方法导入的,您需要使用iserver发布服务,在原生Cesium中使用插件库加载超图服务,用插件需要注意原生cesium建议使用1.9以前版本;具体可以参考博客https://mcaitaco.blog.csdn.net/article/details/126757751
import的不是数据,是 它的js 文件 ,在vue 中。
请问您的S3MTilesLayer.js文件是在哪里获取的呢?原生cesium引入超图服务是需要插件的,而且不能直接加载s3m的scp文件的

SuperMap/s3m-spec (github.com),这里的,我把 S3M_module 文件夹里的所有文件都放入到我的工程 vue同级文件夹内,

import S3MTilesLayer from "./S3M_module/S3MTiles/S3MTilesLayer"; 引入,

然后页面就崩溃

我放到静态文件里,但是报 .wasm文件没有正确加载。
s3m-spec插件在Github上有专门的研发人员进行维护,您可以在Issues中提出您所遇到的问题
除了这个插件还有别的方式使用vue加载 s3mb,麻烦告诉下
你这个给的示例是加载 iserver 的 数据服务的,我本地没有iserver,只有.scp文件及同级.s3mb文件夹。这个该怎么加载
提供的 SuperMap3D.js 中有'realspace',这个字符串的强制判断
不使用iserver服务的话,就只能使用之前的github方法了
...