Tomcat 和节点服务器上托管海拔数据时的不同输出

Different output when elevations data hosted on Tomcat and Node server

当我编写以下代码并在 Tomcat 上托管 .terrain 文件时,我可以正确地看到一个区域的海拔高度:

var terrainProvider = new Cesium.CesiumTerrainProvider({      
  url: 'http://localhost:8080/terrain/terrain_52_06'
});
this.scene.terrainProvider = terrainProvider;

但是,当我在 nodejs 服务器上编写以下代码并托管 .terrain 文件时,我可以看到该区域的海拔高度,但除此之外,我还可以在全球地图上看到升高的尖峰:

var terrainProvider = new Cesium.CesiumTerrainProvider({      
  url: 'http://localhost:3005/terrain/terrain_52_06'
});
this.scene.terrainProvider = terrainProvider;

基本上,我的应用程序在节点服务器上运行:http://localhost:3005。 因此,在 Tomcat 的情况下,我启用 CORS 然后它就可以工作,而在节点服务器中我不需要 CORS。

您必须为 .terrain 文件指定 headers "Content-Type" 和 "Content-Encoding"。例如,如果您使用的是 express,它将是这样的:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'X-Requested-With');
    if (path.extname(req.url) === '.terrain') {
        res.header('Content-Type', 'application/octet-stream');
        res.header('Content-Encoding', 'gzip');     
    }
    next();  
}

希望对您有所帮助。