首页 > 解决方案 > 如何设置 Openstreetmap 的样式?

问题描述

目前我正在使用带有 Openstreetmaps 的传单。我想为地图添加一些样式以获得更好的外观和感觉,并将地图的主题与我的应用程序的主题相匹配。我看到了 maputnik、mapbox 等,它们会收取费用来使用自定义样式。有没有免费的方法可以做到这一点?

标签: leafletmaps

解决方案


我想您在 Leaflet 应用程序中使用的 OpenStreetMap 是免费的 OpenStreetMap WMS。因此,您应该首先了解什么是 WMS。

来自 OSM 维基:

WMS 代表 Web 地图服务。它是通过 HTTP 提供地图图像的 OGC 标准。

事实上,使用 OpenStreetMap WMS 得到的就是这个过程的最终产物:

存储在数据库中的空间数据 -> WMS 服务器 -> WMS 切片

WMS 服务器将空间数据转换为地理参考图像并负责样式设置。

空间数据库和 WMS 服务器都属于 OpenStreetMap。你得到的是他们的服务器提供的免费瓷砖(图像)。因此,您可以应用于地图图块的唯一样式是可以应用于光栅图像的样式(例如黑白滤镜)。例如,您不能为道路、建筑物等应用不同的样式。这只能由 WMS 服务器完成。

MapboxMaptiler和其他供应商实际上是在使用 OSM 数据集,让您选择一种样式,甚至创建一个自定义样式。样式仍然由他们自己的 WMS 服务器完成。这就是为什么这些服务并非完全免费的原因。

因此,自定义 WMS 样式的唯一选择是:

  • 建立自己的 WMS 服务器。这可能很麻烦,并且由于硬件要求和可能的安全问题,它实际上可能不像听起来那么免费。
  • 使用可能提供具有特定限制的免费定价计划(例如每月提供的瓷砖)的第三方提供商(如您提到的那些)。

推荐阅读