3

我想在我的站点上部署一个 TerriaJS 实例,用于 3D(带有 2D 回退)地理空间映射。我对如何在我的网站上实际“部署”TerriaJS 感到有些困惑。我对 Leaflet 非常熟悉......几乎只需包含 Leaflet.js 文件,创建一个 div,然后就可以了。但是,我正在浏览 TerriaJS 的 github 页面上的 wiki,我看到的只是一堆 NodeJS。

我错过了什么?我能够让地图与 NPM 一起运行,并且我看到了一个不错的 3D 地图(在节点 Web 服务器实例内运行),但这对我没有任何好处,因为我希望能够将地图嵌入到我的网站。

如果有人有一个很好的(简单的英语)教程或起点,那就太棒了。

谢谢。

4

1 回答 1

5

我们通常与 TerriaJS 一起使用的基于节点的 Web 服务器只做一些事情:

  • 它提供构成应用程序的静态 HTML、JavaScript 和 CSS。
  • 它在 /proxy 包含一个简单的服务,允许 TerriaJS 访问不支持 CORS 的地理空间数据服务器。
  • 它在 /convert 包含另一个服务,该服务使用 OGR 将地理空间矢量数据(例如 shapefile)转换为 GeoJSON 以供 TerriaJS 客户端显示。

其中,只有第一个是必需的。因此,您可以将工作中的 TerriaJS 应用程序的 wwwroot 目录复制到运行您站点的任何 Web 服务器上,它会像在基于节点的服务器上一样运行在那里。您必须确保所有地理空间数据都位于同一服务器上或托管在支持 CORS 的服务器上,并且不支持 shapefile 转换,但除此之外,您应该一切顺利。

在现有网页中嵌入 TerriaJS有点棘手。您需要从您开始使用的 TerriaJS 应用程序中的 index.js、index.html 和 index.less 文件开始(可能是 NationalMap?)并修改它们以满足您的需要。您需要使用基于 gulp 的构建过程。但是一旦这一切都完成了,您可以像以前一样将文件复制到您的 Web 服务器。

根据您的需要,您还可以考虑将 TerriaJS 嵌入到 iframe 中的页面中,而不是将其直接构建到页面中。您可以通过为 URL 指定参数来控制目录的内容并自定义 UI 的一些基本方面。您还可以通过发布此处所述的跨窗口消息来控制它。

最后,可以在没有提供用户界面的情况下使用 TerriaJS,例如通过提供您自己的用户界面。不过,这是一个非常高级的场景,所以如果你想走这条路,最好发布一个单独的问题。

于 2016-02-13T11:33:11.423 回答