在 Web 项目中使用来自 Android 项目的 map.osm 和 osmarender.xml

Using map.osm and osmarender.xml from Android project in web project

我前段时间编辑了一个 .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(可能还有 osmosis 或一些渲染工具)来做到这一点吗?如果是这样,如何(大约)?

您可以使用 Maperitive, TileMill or a similar application. It can't get any faster. Also take a look at the various rendering softwares for OSM.

预渲染所有需要的图块

MOBAC (2.0 Alpha 4) and Mapsforge Tile Server 可以根据 mapsforge 样式和地图文件渲染光栅图块。 tiles/server 可用于其他应用程序,如 Leaflet 或 OpenLayers。

虽然不确定它们有多稳定和成熟,MOBAC 仍处于 alpha 阶段,MTS 有裁剪标签的问题并且没有 Windows 支持。

另请参阅 mapsforge OSM Wiki 页。

A​​arg ... 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" 目录。

总之,非常感谢两位的帮助!