3

我前段时间编辑了一个 .osm 文件和一个样式文件 (osmarender.xml),并将其包含在一个 Android 项目中(使用 osmosis 和 Mapsforge 库)。工作正常,看起来不错。现在我想在使用 OpenLayers(或 Leaflet?)的 Web 项目中重用这些文件。

使用这个例子(https://wiki.openstreetmap.org/wiki/OpenLayers_osm_file_example)我能够显示我的(非常本地,但仍然是 23 MB)地图,但是,它都是黄色的(当然没有应用样式)它被渲染在 OSM 底图之上。

我想做以下事情: 1. 只显示我的地图(不需要或不需要其他基本地图)。2. 快速显示(但允许平移和缩放)。3. 使用我的样式(在 osmarender.xml 中定义)显示它。4. 只显示它(停止平移靠近边界框的边界)。

我可以用 OpenLayers(可能还有渗透或一些渲染工具)来做到这一点吗?如果是这样,如何(大约)?

4

3 回答 3

3

您可以使用MaperitiveTileMill或类似应用程序预渲染所有需要的图块。它不能变得更快。还可以看看OSM 的各种渲染软件

于 2015-10-29T17:11:06.610 回答
0

MOBAC (2.0 Alpha 4)Mapsforge Tile Server可以基于 mapsforge 样式和地图文件渲染光栅图块。瓦片/服务器可用于其他应用程序,如 Leaflet 或 OpenLayers。

不过,不确定它们有多稳定和成熟,MOBAC 仍然是 alpha 版,MTS 存在标签剪裁问题且不支持 Windows。

另请参阅mapsforge OSM Wiki页面。

于 2015-10-30T21:37:24.620 回答
0

Aarg ... Mapsforge Tile Server 是一个很好的提示,但是,正如我今天发现的那样,答案要容易得多。

如果您有一个基于 Mapsforge 库的工作 Android 地图应用程序,您可以让该应用程序生成切片并将它们存储在您的移动设备上。例如,您可以从那里复制它们并在使用 OpenLayers 的 Web 项目中重复使用它们。

在我的例子中,Android 代码(使用 Mapsforge 0.5.2)如下:

TileCache tileCache = AndroidUtil.createTileCache(activity, "mapcache",
            mapView.getModel().displayModel.getTileSize(), this.getScreenRatio(),
            mapView.getModel().frameBufferModel.getOverdrawFactor());

它将切片写入“mapcache”目录。

无论如何,非常感谢你们俩的帮助!

于 2015-10-31T14:34:31.973 回答