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();
}
希望对您有所帮助。
当我编写以下代码并在 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();
}
希望对您有所帮助。