--- title: mbstyle (Mapbox 样式规范) date: 2023-10-14 author: ac tags: - Mapbox GL categories: - GIS --- > [Mapbox style document](https://www.mapbox.com/mapbox-gl-js/style-spec/) 是一种基于`JSON`的语言,它定义了地图的视觉外观、绘制的数据以及绘制时要使用的顺序数据和样式,`Mapbox`样式的文档是`SLD`的替代品。 ### 1.简介 `Mapbox` [样式](https://docs.mapbox.com/help/glossary/style/)是定义地图视觉外观的文档:**绘制哪些数据**、绘制数据的**顺序**以及绘制数据时如何设置**数据样式**。 **样式文档结构** 样式文档是具有特定根级别和嵌套属性的[JSON对象](http://www.json.org/),规范定义并描述了这些属性。 Mapbox 样式由一组[根属性](https://docs.mapbox.com/style-spec/reference/root/)组成,其中一些描述单个全局属性,其中一些包含嵌套属性。 某些根属性(例如[`version`](https://docs.mapbox.com/style-spec/reference/root/#version)、[`name`](https://docs.mapbox.com/style-spec/reference/root/#name)和[`metadata`](https://docs.mapbox.com/style-spec/reference/root/#metadata))对地图的外观或行为没有任何影响,但提供与地图相关的重要描述信息。其他要素(如[`layers`](https://docs.mapbox.com/style-spec/reference/layers/)和[`sources`](https://docs.mapbox.com/style-spec/reference/sources/))至关重要,它们决定哪些地图要素将出现在您的地图上以及它们的外观。某些属性(如[`center`](https://docs.mapbox.com/style-spec/reference/root/#center)、[`zoom`](https://docs.mapbox.com/style-spec/reference/root/#zoom)、[`pitch`](https://docs.mapbox.com/style-spec/reference/root/#pitch)和[`bearing`](https://docs.mapbox.com/style-spec/reference/root/#bearing))为地图渲染器提供了一组在初始显示地图时使用的默认值。 ### 2. 规范参考 #### 2.1 根级别属性 Mapbox 样式的根级别属性指定地图的图层、图块源、其他资源,以及在其他地方未指定时初始相机位置的默认值。 ```json { // 必填项 "version": 8,// 样式规范的版本号,必须是8 "sources": {...},// 数据源规范。 "layers": [...],// 图层将按照该数组的顺序绘制。 // 选填项 "name": "Mapbox Streets",//样式名称 "sprite": "mapbox://sprites/mapbox/streets-v8", "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", "bearing": 29,// 水平方位角,单位:度 "center": [ -73.9749, 40.7736 ], // 默认地图中心点 "fog": {},// 雾,也可以叫大气层,用于global的三维效果 "light": { // 全局的光源 "anchor": "viewport", "color": "white", "intensity": 0.4 }, "metadata": {},// 元数据,自定义属性可以放这里 "pitch": ,// 单位为度,默认为0 "projection": ,//d } ``` #### Layer 属性 - `id`:图层标识 - `type`:可选值fill、line、symbol、circle、heatmap、fill-extrusion、raster、hillshade、background、sky type属性指定图层要渲染的类型: ​ fill:带有可选的边界的填充面 ​ line:线类型 ​ symbol:图标点或label标签图层 ​ circle:填充圆 ​ heatmap:热力图 ​ fill-extrusion: 3D 面 ​ raster:栅格影像图层,如WSM|WMTS|单张图片 ​ hillshade:地形数据 ​ background:图层的背景色 ​ sky:一个围绕地图的球形圆顶,在所有其他图层后面渲染。 - Layers有两个子属性决定图层layer的渲染:`layout` 和 `paint`。 + `layout` 属性出现在图层的`"layout"`对象中。它们在渲染过程的早期应用,并定义该层的数据如何传递到 GPU。该属性的更改需要异步“layout”步骤。 + *`paint`属性* 稍后在渲染过程中应用,出现在图层的`"paint"`对象中。属性的更改成本低廉并且同步发生。 ### 参考文章 [1] Mapbox Style Specification [https://docs.mapbox.com/style-spec/guides/](https://docs.mapbox.com/style-spec/guides/) [2] mbstyle样式 — GeoServer 2.24.x User Manual (osgeo.cn) [https://www.osgeo.cn/geoserver-user-manual/styling/mbstyle/index.html](https://www.osgeo.cn/geoserver-user-manual/styling/mbstyle/index.html)