我正在尝试将 OpenStreetMap 数据(osm.pbf 文件)转换为“z/x/y.pbf”文件夹/文件结构,并使用 Openlayers 6 和 Ionic 离线显示地图。
到目前为止我所做的是:
- 下载的 osm.pbf 文件(https://download.geofabrik.de/europe/netherlands/flevoland.html)
- 使用 Maperitive 打开 osm.pbf 并用于
generate-mbtiles [minzoom=0 maxzoom=16]
生成 mbtiles - 使用 mbutil ( https://github.com/mapbox/mbutil ) 和
mb-util --image_format=pbf input_folder output_folder
命令。在此之后,我最终在正确的文件夹结构中使用 pbfs -到目前为止非常好。 - 使用 openlayers 显示 pbfs(请注意,我使用的是 Ionic,所以这里有一些 Angular 代码)
this.map = new Map({
layers: [
new VectorTileLayer({
declutter: true,
source: new VectorTileSource({
format: new MVT(),
url: 'http://localhost:8100/assets/downloaded-osm-pbfs/{z}/{x}/{y}.pbf'
}),
style: createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text)
})
],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});
在此之后,一旦我尝试在浏览器中查看地图,我就会得到“错误:未实现的类型:6”。
有趣的是,如果我使用https://openmaptiles.com/downloads并从那里下载 mbtiles 并执行第 3-4 步(在第 3 步中,我只是做额外的步骤并解压缩 pbfs,因为 openmaptiles gzip 是文件)一切都会正确显示,但这里的问题是 openmaptiles 提供 14 个缩放级别,我需要 16 个缩放级别。
知道如何克服这个问题吗?任何帮助将不胜感激!