Mapbox 地圖樣式規范
Mapbox 樣式文件定義的是地圖所呈現的視覺外觀,包括:需要繪制哪些數據、繪制的順序、以及繪制數據時如何進行符號化。樣式文檔是以 JSON 對象中的屬性字段進行組織的。此規范對這些屬性字段進行定義和描述。
此文檔面向的對象包括:
- 更傾向於手寫樣式而不是使用 Mapbox Studio 生成樣式的高級設計師和制圖人員
- 希望使用 Mapbox GL JS 或 Mapbox iOS 或 Android SDK 中樣式相關特性的開發者
- 開發生成或處理 Mapbox 樣式文件的軟件工具開發者。
根節點屬性
根節點屬性字段規定了樣式中地圖的圖層、瓦片數據源和其他資源、以及其他地方未指定時相機的默認參數。
{ "version": 8, "name": "Mapbox Streets", "sprite": "mapbox://sprites/mapbox/streets-v8", "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", "sources": {...}, "layers": [...] }
默認方位角,沿順時針偏離真北方向的夾角。這個方位角只有在地圖沒有被其他方法定位時(例如地圖設置或用戶交互)才生效。
"bearing": 29
默認傾斜角度。0 代表垂直於地面,即垂直俯視地圖,更大的值例如 60 可以眺望到地平線。這個傾斜角度只有在地圖沒有被其他方法定位時(例如地圖設置或用戶交互)才生效。
"pitch": 50
數據源說明。
"sources": { "mapbox-streets": { "type": "vector", "url": "mapbox://mapbox.mapbox-streets-v6" } }
獲取雪碧圖及其元數據的基礎 URL。擴展名后綴 .png
、.json
、以及縮放因子 @2x.png
會被自動添加。當有圖層使用了 background-pattern
、fill-pattern
、line-pattern
、或icon-image
屬性時,此屬性必須設置。
"sprite": "mapbox://sprites/mapbox/bright-v8"
獲取以有向距離場編碼的 PBF 字形文件的 URL 模板。URL 必須包含 {fontstack}
和 {range}
占位符。當有圖層使用了 text-field
布局屬性時,此屬性必須設置。
"glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf"
數據源
數據源提供地圖顯示的數據。數據源的類型通過 "type"
屬性指定,並且必須是 vector, raster, geojson, image, video 其中之一。僅添加數據源並不會立即顯示在地圖上,因為缺少樣式信息如顏色或線寬。通過圖層引用數據源將其顯示出來。可以對同一數據源采用多種方式渲染,例如在高速路圖層中對不同的等級的公路進行分別渲染以示區分。
瓦片數據源(矢量和柵格)必須按照 TileJSON 規范 來設置數據源信息。 可通過多種方式指定:
- 在數據源字段中直接提供 TileJSON 屬性字段如
"tiles"
、"minzoom"
、和"maxzoom"
:"mapbox-streets": { "type": "vector", "tiles": [ "http://a.example.com/tiles/{z}/{x}/{y}.pbf", "http://b.example.com/tiles/{z}/{x}/{y}.pbf" ], "maxzoom": 14 }
- 提供一個指向 TileJOSN 文件的
"url"
:"mapbox-streets": { "type": "vector", "url": "http://api.example.com/tilejson.json" }
- 提供一個 url 指向支持EPSG:3857(或 EPSG:900913)坐標的 WMS 地圖服務,作為瓦片的數據源。 服務的 url 應該包含一個
"{bbox-epsg-3857}"
替換符,用以提供bbox
參數。 (此項功能目前僅支持 Mapbox GL JS 和 Mapbox macOS SDK。)"wms-imagery": { "type": "raster", "tiles": [ 'http://a.example.com/wms?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=example' ], "tileSize": 256 }
vector
矢量瓦片數據源。瓦片必須是 Mapbox Vector Tile 格式。瓦片中所有的幾何坐標必須在 -1 * extent
和 (extent * 2) - 1
之間(包括界限值)。所有引用矢量數據源的圖層必須指定 "source-layer"
屬性。 對於 Mapbox 托管的矢量瓦片,"url"
的形式為 mapbox://mapid
。
"mapbox-streets": { "type": "vector", "url": "mapbox://mapbox.mapbox-streets-v6" }
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基本功能 | >= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
raster
對於 Mapbox 托管的矢量瓦片,"url"
的形式為 mapbox://mapid
。
"mapbox-satellite": { "type": "raster", "url": "mapbox://mapbox.satellite", "tileSize": 256 }
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基本功能 | >= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
geojson
GeoJSON 數據源。數據源必須指定 "data"
屬性,其值可以為 URL 或者內聯的 GeoJSON。
"geojson-marker": { "type": "geojson", "data": { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-77.0323, 38.9131] }, "properties": { "title": "Mapbox DC", "marker-symbol": "monument" } } }
以下示例是一個通過 URL 方式指向一個外部 GeoJSON 文件的 GeoJSON 數據源。GeoJSON 文件必須在同一域上或者可通過 CORS 方式訪問到。
"geojson-lines": { "type": "geojson", "data": "./lines.geojson" }
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基礎功能 | >= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
聚類 | >= 0.14.0 | 暫不支持 | 暫不支持 |
image
圖片數據源。"url"
包含了圖片文件的位置。
"coordinates"
數組包含圖片四角的 [經度, 緯度]
坐標對,以順時針方向排列:左上角、右上角、右下角、左下角。
"image": { "type": "image", "url": "/mapbox-gl-js/assets/radar.gif", "coordinates": [ [-80.425, 46.437], [-71.516, 46.437], [-71.516, 37.936], [-80.425, 37.936] ] }
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基礎功能 | >= 0.10.0 | 暫不支持 | 暫不支持 |
video
視頻數據源。"urls"
的值是一個數組。對於數組中的每一個 URL,將會生成一個 video 元素的 源,以滿足不同瀏覽器對視頻格式的要求。
"coordinates"
數組包含視頻四角的 [經度, 緯度]
坐標對,以順時針方向排列:左上角、右上角、右下角、左下角。
"video": { "type": "video", "urls": [ "https://www.mapbox.com/drone/video/drone.mp4", "https://www.mapbox.com/drone/video/drone.webm" ], "coordinates": [ [-122.51596391201019, 37.56238816766053], [-122.51467645168304, 37.56410183312965], [-122.51309394836426, 37.563391708549425], [-122.51423120498657, 37.56161849366671] ] }
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基礎功能 | >= 0.10.0 | 暫不支持 | 暫不支持 |
Sprite
樣式中的 sprite
屬性需提供一個 URL 模板,用於獲取在background-pattern
、fill-pattern
、line-pattern
、和 icon-image
屬性中使用的小圖標。
"sprite": "mapbox://sprites/mapbox/bright-v8"
一個有效的雪碧圖源必須包含兩種文件:
- 索引文件,即一個 JSON 文件包含對雪碧圖中的每個圖標的描述信息。文件的內容必須是一個 JSON 對象,其中 key 作為標識符,被以上四個樣式屬性所使用;value 是一個對象,用來描述圖標的尺寸(
width
和height
屬性)、像素比例(pixelRatio
)、以及在雪碧圖中的位置(x
和y
)。例如,只包含一個圖標的雪碧圖的索引文件內容如下:{ "poi": { "width": 32, "height": 32, "x": 0, "y": 0, "pixelRatio": 1 } }
"icon-image": "poi"
的符號圖層來引用雪碧圖中的圖標,或者使用"icon-image": "{icon}"
替換符的方式,符號化icon
字段的值為poi
的矢量瓦片要素。 - 圖片文件, 包含雪碧圖數據的 PNG 圖片。
Mapbox SDK 將會根據樣式中的 sprite
屬性值,生成獲取這兩種文件的 URL。首先,對於這兩種文件,在高分屏設備上都會在 URL 上追加 @2x
。其次,會對索引文件添加 .json
文件后綴,對圖片文件添加 .png
文件后綴。例如,如果你指定 "sprite": "https://example.com/sprite"
,渲染是將會載入 https://example.com/sprite.json
和 https://example.com/sprite.png
,或者 https://example.com/sprite@2x.json
和 https://example.com/sprite@2x.png
。
如果您正在使用 Mapbox Studio,Mapbox 會提供預生成好的雪碧圖,同時也可以上傳自定義的 SVG 圖像來生成您自己的雪碧圖。無論哪種方式,雪碧圖都會自動構建並且可用通過 Mapbox API 獲取到。如果您想手動生成雪碧圖並放到自己的服務器上,您可以使用 spritezero-cli,這個命令行工具可以從 SVG 文件夾中生成兼容 Mapbox GL 的雪碧圖片和索引文件。
Glyphs
樣式的 glyphs
屬性提供一個獲取 PBF 格式的有向距離場字型文件的 URL 模板。
"glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf"
Layers
樣式的 layers
屬性羅列出所有的樣式圖層。圖層的類型通過 "type"
屬性指定,並且必須是 background, fill, line, symbol, raster, circle 其中之一。
除了 background 圖層,其他圖層均需要引用一個數據源。圖層從數據源中獲取數據、過濾數據、以及定義要素符號化的方法。
"layers": [ { "id": "water", "source": "mapbox-streets", "source-layer": "water", "type": "fill", "paint": { "fill-color": "#00ffff" } } ]
圖層有兩個子屬性用來確定圖層中的數據如何被渲染:layout
和 paint
屬性.
Layout 屬性 出現在圖層的 "layout"
對象中。它將被應用於渲染過程的早期階段,定義了圖層的數據如何傳輸到 GPU。為了提升效率,其他圖層可以通過 "ref"
屬性來共享此圖層的 layout 屬性,應當盡可能地使用此功能。這將會減少處理時間,並允許圖層間共享 GPU 內存和其他資源。
Paint 屬性 被應用於渲染過程的后期階段。一個共享其他圖層 layout 屬性的圖層可以設置不同的 paint 屬性。Paint 屬性出現在圖層的 "paint"
對象中。圖層可以設置特定類別的 paint 屬性,根據地圖設置的類名稱進行調用。例如,圖層的 "paint.night"
屬性將會在地圖設置了 "night"
類名時生效。
background
Layout 屬性
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
背景色。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
在雪碧圖中的圖標名稱,用來繪制背景圖案。為了無縫填充,圖案的寬和高必須是 2 的整數倍如 (2, 4, 8, ..., 512)。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
背景色的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
fill
Layout 屬性
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
多邊形填充是否需要反鋸齒。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
多邊形填充的不透明度。與 fill-color
不同的是,當有描邊時,這個值也會影響到多邊形填充作為 1px 的描邊。對於一個凸出的填充圖層,不透明度將以圖層為單位而不是以要素為單位生效(也因此將不會支持字段函數)。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.21.0 | 不支持 | 不支持 |
此圖層填充部分的顏色。該顏色可以用包括 alpha 通道的 rgba
方式指定,並且顏色的不透明度將不會影響到周圍 1 px的描邊。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.19.0 | 不支持 | 不支持 |
多邊形填充的輪廓顏色。如果未指定,與 fill-color
一致。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.19.0 | 不支持 | 不支持 |
幾何要素的偏移量。以 [x, y] 形式設置,負值表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
控制偏移的參考點。
- map
-
相對於地圖偏移。
- viewport
-
相對於視窗偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
在雪碧圖中的圖標名稱,用來對多邊形進行圖案填充。為了無縫填充,圖案的寬和高必須是 2 的整數倍如 (2, 4, 8, ..., 512)。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
line
Layout 屬性
線末端的顯示樣式。
- butt
-
方型末端,僅繪制到直線端點。
- round
-
圓型末端,以線寬的 1/2 為半徑,以線端點為圓心,超出線端點繪制。
- square
-
方型末端,以線寬的 1/2 長度超出線端點繪制。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
線交叉時的顯示樣式。
- bevel
-
方型交點,以線寬的 1/2 長度超出交點繪制。
- round
-
圓型交點,以線寬的 1/2 為半徑,以交點為圓心繪制,超出交點繪制。
- miter
-
尖型交角,以兩線段外沿相交,超出交點繪制。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
用來將銳利的尖型交角自動地轉換為方型交角。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
用來將平淺的圓型交角自動地轉換為尖型交角。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
繪制線的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
繪制線的顏色。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.23.0 | 不支持 | 不支持 |
幾何要素的偏移量。以 [x, y] 形式設置,負值表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
控制偏移的參考點。
- map
-
相對於地圖偏移。
- viewport
-
相對於視窗偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Stroke thickness.
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
在線的實際路徑外部繪制線套。設置的值表示內間距。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
線的偏移。對於線狀要素,正值表示相對於線走向的右邊偏移。對於多邊形要素,正值表示內縮(inset),負值表示外突(outset)。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.12.1 | >= 3.1.0 | >= 3.0.0 |
線虛化的像素值。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
指定生成虛線的實部和虛部長度。設置的長度會隨着線寬進行縮放。將長度乘以當前線寬即為虛線的實際像素數。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
在雪碧圖中的圖標名稱,用來對線進行圖案填充。為了無縫填充,圖案的寬和高必須是 2 的整數倍如 (2, 4, 8, ..., 512)。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
symbol
Layout 屬性
注記相對於幾何要素的位置。
- point
-
標注在幾何要素的點位上。
- line
-
標注在幾何要素的邊線上。只能用在
LineString
和Polygon
要素上
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
兩個注記錨點之間的距離。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,注記不會跨瓦片邊緣,以避免相互沖突。當圖層的矢量瓦片沒有足夠的緩沖區以避免沖突,或者一個點注記圖層在一個線注記圖層之上時,推薦開啟此設置。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,圖標符號即使碰撞到其他繪制的注記也會顯示。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,其他注記即使碰撞到此圖標符號也會顯示。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,當此注記的圖標與其他注記碰撞而文本未碰撞時,僅顯示此注記的文本而不顯示圖標。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
與 symbol-placement
組合使用,決定旋轉時圖標的行為。
- map
-
當
symbol-placement
設置為point
時,將圖標與東西方向對齊。當symbol-placement
設置為line
時,將圖標的 x 軸與線對齊。 - viewport
-
將圖標的 x 軸與視窗的 x 軸對齊,無論
symbol-placement
設置為哪個值。 - auto
-
當
symbol-placement
設置為point
時,與viewport
行為一致。當symbol-placement
設置為line
時,與map
行為一致。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
|
不支持 | 不支持 | 不支持 |
圖標的縮放因子。1 表示原始大小,3 表示三倍大小。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
縮放圖標以與文本相匹配。
- none
-
圖標按其本身的比例進行顯示。
- width
-
圖標在 x 軸進行縮放以匹配文本的寬度。
- height
-
圖標在 y 軸進行縮放以匹配文本的高度。
- both
-
圖標在 x 軸與 y 軸都進行縮放。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.21.0 | 不支持 | 不支持 |
根據 icon-text-fit
確定的圖標尺寸添加額外的間隔,以上-右-下-左的順時針順序設置。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.21.0 | 不支持 | 不支持 |
替換 {tokens} 的字符串,引用拉取的圖標資源。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
按順時針方向旋轉圖標。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.21.0 | 不支持 | 不支持 |
包圍在圖標 bbox 外的額外空間,用以檢測注記碰撞。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
如果設置為 true,圖標可以被翻轉以避免圖標上下顛倒。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
圖標與其錨點的偏移量。正值表示向右和下偏移,負值表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
當地圖傾斜時文本的方向。
- map
-
文本與地圖平面對齊。
- viewport
-
文本與視窗平面對齊。
- auto
-
自動地與
text-rotation-alignment
設置相匹配。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.21.0 | >= 2.0.0 | >= 2.0.1 |
|
不支持 | 不支持 | 不支持 |
與 symbol-placement
結合使用,確定構成文本的單個字型的旋轉行為。
- map
-
當
symbol-placement
設置為point
時,將文本與東西方向對齊。當symbol-placement
設置為line
時,將文本的 x 軸與線對齊。 - viewport
-
將字型的 x 軸與視窗的 x 軸對齊,無論
symbol-placement
設置為哪個值。 - auto
-
當
symbol-placement
設置為point
時,與viewport
行為一致。當symbol-placement
設置為line
時,與map
行為一致。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
|
不支持 | 不支持 | 不支持 |
用來作為文本標注的字段。用 {field_name} 指示使用要素的哪個字段。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
顯示文本的字棧。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
字體大小
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本折行的最大行度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
多行文本的行高。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
字符間距。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本對齊選項。
- left
-
文本左對齊。
- center
-
文本居中。
- right
-
文本右對齊。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本停靠到錨點的部分。
- center
-
文本中心停靠到錨點。
- left
-
文本左邊停靠到錨點。
- right
-
文本右邊停靠到錨點。
- top
-
文本頂部停靠到錨點。
- bottom
-
文本底部停靠到錨點。
- top-left
-
文本的左上角停靠到錨點。
- top-right
-
文本的右上角停靠到錨點。
- bottom-left
-
文本的左下角停靠到錨點。
- bottom-right
-
文本的右下角停靠到錨點。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
相鄰字符的最大夾角。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
順時針旋轉文本的角度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本框四周的額外空間,用以檢測注記碰撞。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
如果設置為 true,文本可以被翻轉以避免圖標上下顛倒。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置文本的大小寫,類似於 CSS 的 text-transform
屬性。
- none
-
文本保持不變。
- uppercase
-
強制使所有的字符大寫。
- lowercase
-
強制使所有的字符小寫。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本與其錨點的偏移量。正值表示向右和下偏移,負值表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,文本標注即使碰撞到其他繪制的注記也會顯示。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,其他注記即使碰撞到此文本標注也會顯示。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
設置為 true 時,當此文本注記與其他注記碰撞而圖標未碰撞時,僅顯示此注記的圖標而不顯示文本。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
繪制圖標的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
圖標的顏色。僅對 sdf 格式的圖標有效。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
圖標的光暈顏色。僅對 sdf 格式的圖標有效。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
光暈到圖標輪廓的距離。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
光暈向外漸變的寬度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
圖標錨點偏離原始位置的距離。正數表示向右和下偏移,負數表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
控制偏移的參考點。
- map
-
相對於地圖偏移。
- viewport
-
相對於視窗偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
繪制文本的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
繪制文本的顏色。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
文本光暈的顏色,用於區別於背景。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
光暈離字體輪廓線的距離。最大值為字體大小的 1/4
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
光暈向外漸變的寬度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
控制偏移的參考點。
- map
-
相對於地圖偏移。
- viewport
-
相對於視窗偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
raster
Layout 屬性
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
繪制圖片的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
在色輪上旋轉色相的角度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
增大或減少圖片的亮度。此值是最小亮度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
增大或減少圖片的亮度。此值是最大亮度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
增加或者減少圖片的飽和度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
增加或者減少圖片的對比度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
當添加新瓦片時的漸隱時間。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
circle
Layout 屬性
是否顯示此圖層。
- visible
-
顯示此圖層。
- none
-
不顯示此圖層。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
Paint 屬性
圓的半徑。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.18.0 | 不支持 | 不支持 |
圓的填充顏色。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.18.0 | 不支持 | 不支持 |
圓虛化的程度。1 表示把圓虛化到只有圓心是不透明的。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.20.0 | 不支持 | 不支持 |
繪制圓的不透明度。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
data-driven styling |
>= 0.20.0 | 不支持 | 不支持 |
幾何要素的偏移量。以 [x, y] 形式設置,負值表示向左和上偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
控制偏移的參考點。
- map
-
相對於地圖偏移。
- viewport
-
相對於視窗偏移。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
當地圖傾斜時,控制圓的縮放行為。
- map
-
圓根據與相機的視距離進行縮放。
- viewport
-
圓不進行縮放。
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
basic functionality |
>= 0.21.0 | 不支持 | 不支持 |
值類型
Mapbox 樣式文件包含多種不同類型的值,其中大多數是圖層相關的屬性。
Color
顏色值以 JSON 字符串的形式定義,允許的格式有:HTML 風格的 hex 值、rgb、rbga、hsl、和hsla。HTML 保留的顏色名稱如 yellow
和 blue
也可以使用。
{ "line-color": "#ff0", "line-color": "#ffff00", "line-color": "rgb(255, 255, 0)", "line-color": "rgba(255, 255, 0, 1)", "line-color": "hsl(100, 50%, 50%)", "line-color": "hsla(100, 50%, 50%, 1)", "line-color": "yellow" }
支持 hsl,是因為比 rgb() 更易理解。
String
字符串即文本。在 Mapbox 樣式文件中,字符串要用引號括起來。字符串可以為任意內容,但是要注意 text-field
——它實際上是通過花括號的方式引用要素,如下例。
{ "text-field": "{MY_FIELD}" }
Function
任何 layout 或 paint 屬性可以設置成 函數. 函數使得地圖要素的樣式隨當前縮放級別和要素字段變化。
-
stops必選 array.函數按照輸入和輸出進行定義。一對輸入輸出就是一個“stop”。
-
property可選 string.如果指定,函數將會把相應要素字段作為輸入。另見 字段函數。
-
base可選 number. 默認為 1.插值曲線的指數基底。控制斷點插值的增長速率。值越大,在靠近上限的一端增長越快。1 表示線性插值。
-
type可選 enum. 可選的值有 identity, exponential, interval, categorical.identity 函數的輸出與輸入相同。exponential 函數在斷點間插值的結果稍小於和稍大於函數輸入。 這是 屬性的默認設置。interval 函數輸出的斷點值稍小於函數輸入。這是 屬性的默認設置。categorical 函數輸出的斷點值等於函數輸入。
縮放函數允許地圖要素的樣式隨縮放級別變化。縮放用來產生視覺深度和控制數據顯示密度。每個斷點由兩個元素組成,第一個是縮放級別,第二個是函數輸出的值。
{ "circle-radius": { "stops": [ // zoom is 5 -> circle radius will be 1px [5, 1], // zoom is 10 -> circle radius will be 2px [10, 2] ] } }
字段函數允許地圖要素樣式隨其字段值變化。字段函數用來區分同一個圖層中不同類型的要素,或者進行數據可視化。每個斷點由兩個元素組成,第一個是字段的值,第二個是函數輸出的值。需要注意的是,現階段不是所有的樣式屬性、所有的平台都支持字段函數。
{ "circle-color": { "property": "temperature", "stops": [ // "temperature" is 0 -> circle color will be blue [0, 'blue'], // "temperature" is 100 -> circle color will be red [100, 'red'] ] } }
縮放+字段函數允許地圖要素樣式隨縮放級別和 字段進行變化。每個斷點由兩個元素組成,第一個是包含字段值和縮放級別的對象,第二個值是函數輸出的值。需要注意的是對字段函數的支持還不完整。
{ "circle-radius": { "property": "rating", "stops": [ // zoom is 0 and "rating" is 0 -> circle radius will be 0px [{zoom: 0, value: 0}, 0], // zoom is 0 and "rating" is 5 -> circle radius will be 5px [{zoom: 0, value: 5}, 5], // zoom is 20 and "rating" is 0 -> circle radius will be 0px [{zoom: 20, value: 0}, 0], // zoom is 20 and "rating" is 5 -> circle radius will be 20px [{zoom: 20, value: 5}, 20] ] } }
Filter
過濾器從圖層中選擇特定的要素。過濾器是由以下形式的過濾條件構成的數組:
存在與否過濾條件
["has", key]
feature[key] 存在
["!has", key]
feature[key] 不存在
比較過濾條件
["==", key, value]
等於:feature[key] = value
["!=", key, value]
不等於:feature[key] ≠ value
[">", key, value]
大於:feature[key] > value
[">=", key, value]
大於等於:feature[key] ≥ value
["<", key, value]
小於:feature[key] < value
["<=", key, value]
小於等於:feature[key] ≤ value
集合隸屬過濾條件
["in", key, v0, ..., vn]
包含:feature[key] ∈ {v0, ..., vn}
["!in", key, v0, ..., vn]
不包含:feature[key] ∉ {v0, ..., vn}
復合過濾條件
["all", f0, ..., fn]
邏輯與
: f0 ∧ ... ∧ fn
["any", f0, ..., fn]
邏輯或
: f0 ∨ ... ∨ fn
["none", f0, ..., fn]
邏輯非
: ¬f0 ∧ ... ∧ ¬fn
過濾器的 key 必須是表示要素字段的字符串,或者是表示要素類型的特殊字符 "$type"
。value(和集合 v0, ..., vn)必須是 string、number、或 boolean,並且與字段值類型一致。對於 "$type"
,其值必須是 "Point"
、"LineString"
、"Polygon"
其中之一。
集合隸屬過濾條件是一個緊湊和高效的方式,來測試字段值是否在值列表中。
比較和集合隸屬過濾條件進行的是嚴格類型比較。例如,這些比較都會返回 false:0 < "1"
、2 == "2"
、"true" in [true, false]
。
"all"
、"any"
、和 "none"
過濾操作符用來生成復合過濾條件。其值必須是 f0, ..., fn 過濾條件本身。
["==", "$type", "LineString"]
以下過濾條件要求要素的 class
字段的值是 "street_major"、"street_minor"、或 "street_limited"。
["in", "class", "street_major", "street_minor", "street_limited"]
以下復合過濾條件 "all" 包含三條其他過濾條件,並要求選中的要素同時滿足這些條件:要素的 class
必須等於 "street_limited",它的 admin_level
必須大於等於 3,並且幾何類型不能是 Polygon。你可以將復合條件改為 "any" ,用來選擇滿足任意條件的要素——如類型為 Polygon,但 class
字段的值不同。
[ "all", ["==", "class", "street_limited"], [">=", "admin_level", 3], ["!in", "$type", "Polygon"] ]
SDK 支持 | Mapbox GL JS | iOS SDK | Android SDK |
---|---|---|---|
基礎功能 | >= 0.10.0 | >= 2.0.0 | >= 2.0.1 |
has /!has |
>= 0.19.0 | >= 3.3.0 | >= 4.1.0 |