前言

内容包括

1. 搭建openstreetmap地图服务(源自openstreetmap官方搭建教程)

2. 搭建tileserver-gl地图服务(源自openmaptiles官方搭建教程)
(没错,我就是一个官方搬运工,哈哈,不过重点不是教程,而是我在搭建过程中踩的坑,希望能对你有所帮助)

全程干货较多,阅读前建议具备以下知识:

1. openstreetmap相关知识

2. docker和docker-compose方面的知识

 

搭建openstreetmap地图服务(源自openstreetmap官方搭建教程)

部署步骤

1. 首先在linux上安装docker(我这里使用的是CentOS 7)。

2.下载地图数据,建议去这个网站下载https://download.bbbike.org/,选择要下载的对应区域,复制链接,在迅雷中下载,比如我下载整个星球的pbf数据(53G,需要考虑在linux上使用之后的数据膨胀度,大概会膨胀20倍,意思就是要准备3T左右的硬盘空间),直接将这个链接复制(https://download.bbbike.org/osm/planet/planet-latest.osm.pbf)到迅雷中。

3. 将下载的pbf数据放到Linux系统中

4. 新建数据库的挂载卷

docker volume create openstreetmap-data
#这一步也可以自己指定数据库的挂载位置

5. 下载官方提供的openstreetmap-tile-server镜像,并且将地图数据导入到postgres数据库中,这一步需要花费很多的时间,数据越大,花费时间越久

docker run -v /data/openstreetmap/planet-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server:1.3.10 import

官方在前面是加了一个time的,这个命令主要是为了判断自己用了多少时间,可加可不加

6. 创建容器卷openstreetmap-rendered-tiles,这一步是将已渲染的图块存储在中/var/lib/mod_tile,确保该数据在容器重启后仍然存在,进入地图不用重新渲染,不然会出现在浏览器上打开地图,半天都加载不出来的情况

docker run -p 8099:80 --restart=always --name osm-server -v openstreetmap-data:/var/lib/postgresql/12/main -v openstreetmap-rendered-tiles:/var/lib/mod_tile -d overv/openstreetmap-tile-server:1.3.10 run

7. 将下面的地址换成自己的ip和端口,就能正常访问了

http://your.server.ip.address/tile/0/0/0.png

缺点:

其实这种地图服务由于使用的是png协议,有着非常明显的缺点,就是地图渲染很慢,如果你刚安装好,那么在浏览器中打开,加载会很慢。你搭建好了之后,需要等待,等服务器端慢慢渲染,过段时间之后,地图的加载速度就明显变得更快了。

不过这个“快”也是存在瓶颈的,当你将地图放大之后,可能第12个级别(缩放级别,总共14个缩放级别)开始,地图加载就会明显变慢,商用的话,还是存在很大的压力。

优点:

优点还是很明显的,项目开源,数据开源,而且数据也是在不断更新。

 

前端技术支持

可以通过这些技术,可以让地图实现自己需要实现的效果,比如根据经纬度在地图上标记点等。

tileserver-gl地图服务

如果你需要更好,更快的地图服务,请看下面的这篇博客:

搭建tileserver-gl地图服务(源自openmaptiles官方搭建教程)

 

源码与文档地址

openstreetmap-tile-server源码GitHub地址:https://github.com/Overv/openstreetmap-tile-server

openstreetmap文档地址:https://switch2osm.org/serving-tiles/using-a-docker-container/

openstreetmap示例:https://www.openstreetmap.org/

openstreetmap数据源1(可下载星球地图数据):https://download.bbbike.org/

openstreetmap数据源2(下载指定地区数据):https://download.geofabrik.de/

openstreetmap-tile-server镜像地址:https://hub.docker.com/r/overv/openstreetmap-tile-server

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐