1

我也想构建一个 Web 应用程序,我正在研究我必须使用的工具。我想使用我正在考虑的实时地图:

Tilemill获取 .png 以构成我的地图的背景或从 shp 文件中的网站获取数据以在 mapnik 中为此构建图层。

Mapnik使用我想在地图上添加的数据构建图层。

Mapnik:将图层放在一起并生成地图。

TileStache:为我的应用程序生成图块。

Openlayers:在浏览器中显示我的地图和瓷砖。

显示我的地图后,我想添加交互性。例如,当您越过一条线或一个圆圈(一个城镇/一个事件)时,它会为您提供该对象的属性。

但是线条和圆圈将直接集成到 mapnik 地图中,因此我需要添加一些 javascript 以使其动态并打开一个弹出窗口。我该怎么做呢 ?使用Openlayer javascript 库node.js

你对这个问题/我想使用这些工具的方式有什么建议?

非常感谢!

4

1 回答 1

3

我处于类似情况,所以我不知道答案,但从我能够弄清楚的情况来看,我认为你走在正确的轨道上。

我开始使用Mapbox方法,只要您的数据是静态的,它就可以简化事情。您不仅可以使用Tilemill生成 PNG 切片(一旦您使用Carto进行了一些漂亮的样式设置),还可以导入您的数据集。

TileMill 可以导出您的 TileJSON 和 UTFGrid 文件,并将 PNG 切片全部打包并准备好使用。然后 Mapbox 将为您托管所有这些内容,您可以使用他们的mapbox.js库(Leaflet的扩展)将所有内容放在浏览器中,并具有完全的交互性。打开弹出窗口将是您在浏览器中使用 Javascript 执行的操作 - 如果您的意思是 infoWindows(与地图点关联的覆盖窗口),那么这将是对 Leaflet API 的调用。

如果您乐于创建图层并离线导入数据,那么这种方法似乎非常简单且功能强大;Mapbox 甚至会使用叠加的多个图层渲染图块 - 例如,您可以在卫星图像上看到您的圆圈,并合并为单个 PNG。

当您的数据需要实时并且因此您无法在 TileMill 中提前准备好所有数据时,问题就真的出现了。我仍在努力解决这一切,但似乎 TileStache 和 Mapnik 的组合能够为您提供您需要的 TileJSON、GeoJSON 和 UTFGrid 文件以及瓷砖本身。你已经在问题中概述了。

您可能还需要 PostGIS 和 GeoDjango 或类似的幕后软件,以便分别保存和管理您的实时数据。

正如我所说,我仍在努力让我的全部堆栈正常工作,所以我不能保证这 100%,但如果你的数据是预先收集的,那么为了简单起见,我肯定会推荐 TileMill 路线。

我希望这是一个帮助!

于 2013-06-19T23:39:20.837 回答