没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要:本文档详细讲解了 Mapbox Style 规范的配置项和应用场景,适用于构建自定义地图样式。涵盖基本配置项(如版本、名称、中心点)、高级设置(如雪碧图、字形符号)及图层、数据源的具体配置。文中不仅列出了每项配置的作用和默认值,还特别关注了不同数据源类型(矢量、栅格、GeoJSON 等)的特点,以及各类渲染图层(填充、线、圆形符号等)及其视觉特性调整方法。表达式 Expressions 和函数 Functions 部分进一步深化对交互式动态效果的支持,使得开发者能够创建更灵活、响应式的地图界面。 适合人群:具有前端或地理信息系统(GIS)开发经验的开发者和技术人员,熟悉 JavaScript、Mapbox GL JS 或其他地图渲染平台的用户。 使用场景及目标:帮助开发团队利用详细的 Mapbox 配置项来自定义独特的地图外观和用户体验。同时,为数据分析师及设计师提供了定制化的工具来提升产品美观性和互动性,满足多样化需求。最终目的是让用户能根据具体业务需求构建高性能且视觉效果优秀的地图应用。 阅读建议:鉴于文档信息量庞大,请先掌握各配置项的基本概念后再深入研究表达式和函数相关内容,实践时注意结合官方API文档和实际项目要求进行尝试,确保理论与实例相结合的学习效果。
资源推荐
资源详情
资源评论
MapboxStyle规范规范
( )致⼒于打造全球最漂亮的个性化地图。
这⾥记录下其 Web 端 API 的地图样式规范 的各个配置项:
必填项会加上 * ,⽅便根据⽬录进⾏查看
1. version *
version:版本号(必填,且值必须为 8)
2. name
name:名称(可选,⽤于给 style 取名,⽅便阅读)
3. metadata
metadata:元数据(可选,⽤于给 style 附加⼀些任意属性。为避免冲突,为避免冲突,建议添加前缀,如 mapbox:)
4. center
center:地图的默认中⼼点(可选,由 经度 和 纬度 构成)
5. zoom
zoom:地图的默认缩放层级(可选,值越⼤,越靠近地表。mapbox 采⽤的是⽆极缩放,范围⼀般为 0 ~ 24)
6. bearing
bearing:地图的默认⽅位⾓(可选,表⽰ 地图视⼝正上⽅中⼼点 在地图上 北偏东 的⾓度。默认值为 0)
7. pitch
pitch:地图的默认倾斜⾓度(可选,默认值为 0,范围为 0 ~ 60)
8. sprite
sprite:雪碧图(可选,⽤来指定获取雪碧图及其元数据的 URL)
sprite 的⾳译是 雪碧,直译是 精灵,表⽰不受地图旋转缩放影响的图标等,类似精灵漂浮在空中。
当有 layer 使⽤了 background-pattern、fill-pattern、line-pattern、fill-extrusion-pattern、icon-image 等属性时,sprite 必填。
"version": 8
"name": "demo"
"metadata": {
"mapbox:name":"demo"
}
"center": [106.66339, 30.42628]
"zoom": 8
"bearing": 0
"pitch": 0
当指定了 sprite 后,mapbox 会⾃动⽣成雪碧图的完整请求地址,分别如下:
如果浏览器进⾏了缩放,则会加上缩放 DPI 因⼦ @2x,如下:
9. glyphs
glyphs:字形符号(可选,⽤来指定加载以 PBF 格式设置的 有向距离场 字形的 URL 模板)
URL 模板必须带有占位符 {fontstack} 和 {range}。
当有 layer 使⽤了 text-field 属性时,glyphs 必填。
10. transition
transition:全局的过渡动画属性(可选,⽤来作为所有过渡动画属性的默认值)
11. light
light:全局的光源(可选)
12. sources *
sources:数据源集合(必填,⽤于包含⼀系列数据源 source,这些数据源提供了在地图上显⽰的数据)
sources 是对象 {} 的形式,其属性名就是 数据源的名称(或者说 数据源的 id),这样可以根据 数据源的名称(或者说 数据源的 id)快速获取数据源的
信息。
每个数据源 source 都有⼀个 type 属性,⽤于指定其具体的类型:
vector:⽮量
raster:栅格
raster-dem:栅格化的数字⾼程模型
geojson: 数据源
image:图⽚
video:视频
(1) vector
vector:⽮量切⽚数据源
"sprite": "mapbox://sprites/mapbox/bright-v8"
`${sprite}.png`
`${sprite}.json`
`${sprite}@2x.png`
`${sprite}@2x.json`
"glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf"
"transition": {
"duration": 300, // 过渡的持续时间(可选,单位:毫秒,默认值为 300)
"delay": 0 // 延迟多久开始过渡(可选,单位:毫秒,默认值为 0)
}
"light": {
"anchor": "viewport", // 锚点,指定作⽤的⽬标(可选,可选值 map、viewport,默认值为 viewport)
"position": [1.15,210,30], // 位置(可选,默认值为 [1.15,210,30])
"color": "white", // 颜⾊(可选,默认值为 #ffffff)
"intensity": 0.5 // 强度(可选,取值范围为 0 ~ 1,默认值为 0.5)
}
"sources": {}
(2) raster
raster:栅格切⽚数据源(相⽐ vector 多了⼀个属性 tileSize)
(3) raster-dem
raster-dem:栅格化的数字⾼程模型(相⽐ raster 多了⼀个属性 encoding)
(4) geojson
geojson: 数据源(数据必须通过 data 属性指定,data 属性值就是⼀个 GeoJSON 或者 GeoJSON 的请求地址)
"sources":{
"vector-source": {
"type": "vector", // 类型(必填)
"url": "mapbox://mapbox.mapbox-streets-v6" // TileJSON 的请求地址(可选)
"tiles": [ // ⽤于指定⼀个或多个切⽚数据源的请求地址(可选,和 TileJSON 中的 tiles 属性⼀致)
"http://a.example.com/tiles/{z}/{x}/{y}.pbf",
"http://b.example.com/tiles/{z}/{x}/{y}.pbf"
],
"bounds": [-180,-85.051129,180,85.051129], // 边界坐标点(可选,⽤于限定切⽚的显⽰范围,默认值为 [-180,-85.051129,180,85.051129])
"scheme":"xyz", // 切⽚坐标系⽅案(可选,可选值为 xyz、tms,默认值为 xyz)
"minzoom": 0, // 最⼩层级(可选,默认值为 0)
"maxzoom": 22, // 最⼤层级(可选,默认值为 22)
"attribution": "" // 属性信息(可选,⽤于地图展⽰时给⽤户看的⼀些信息)
}
}
"sources":{
"raster-source": {
"type": "raster", // 类型(必填)
"url": "mapbox://mapbox.satellite" // TileJSON 的请求地址(可选)
"tiles": [ // ⽤于指定⼀个或多个切⽚数据源的请求地址(可选,和 TileJSON 中的 tiles 属性⼀致)
"http://a.example.com/tiles/{z}/{x}/{y}.pbf",
"http://b.example.com/tiles/{z}/{x}/{y}.pbf"
],
"bounds": [-180,-85.051129,180,85.051129], // 边界坐标点(可选,⽤于限定切⽚的显⽰范围,默认值为 [-180,-85.051129,180,85.051129])
"scheme":"xyz", // 切⽚坐标系⽅案(可选,可选值为 xyz、tms,默认值为 xyz)
"minzoom": 0, // 最⼩层级(可选,默认值为 0)
"maxzoom": 22, // 最⼤层级(可选,默认值为 22)
"attribution": "", // 属性信息(可选,⽤于地图展⽰时给⽤户看的⼀些信息)
"tileSize": 256 // 切⽚的最⼩展⽰尺⼨(可选,单位:像素,默认值为 512,即 1024/2)
}
}
"sources":{
"raster-dem-source": {
"type": "raster-dem", // 类型(必填)
"url": "mapbox://mapbox.terrain-rgb" // TileJSON 的请求地址(可选)
"tiles": [ // ⽤于指定⼀个或多个切⽚数据源的请求地址(可选,和 TileJSON 中的 tiles 属性⼀致)
"http://a.example.com/tiles/{z}/{x}/{y}.pbf",
"http://b.example.com/tiles/{z}/{x}/{y}.pbf"
],
"bounds": [-180,-85.051129,180,85.051129], // 边界坐标点(可选,⽤于限定切⽚的显⽰范围,默认值为 [-180,-85.051129,180,85.051129])
"scheme":"xyz", // 切⽚坐标系⽅案(可选,可选值为 xyz、tms,默认值为 xyz)
"minzoom": 0, // 最⼩层级(可选,默认值为 0)
"maxzoom": 22, // 最⼤层级(可选,默认值为 22)
"attribution": "", // 属性信息(可选,⽤于地图展⽰时给⽤户看的⼀些信息)
"tileSize": 256, // 切⽚的最⼩展⽰尺⼨(可选,单位:像素,默认值为 512,即 1024/2)
"encoding": "mapbox" // 编码(可选,可选值为 terrarium、mapbox,默认值为 mapbox)
}
}
(5) image
image:图⽚数据源
(6) video
video:视频数据源
13. layers *
layers:图层集合(必填,包含了⼀系列图层 layer,这些图层指定了如何渲染数据源提供的数据)
每个图层 layer 都有 id(具有唯⼀性)和 type 属性,其中 type 属性指定了其具体的渲染类型:
"sources": {
"geojson-source": {
"type": "geojson", // 类型(必填)
"data": { // 数据(可选,值必须为⼀个 GeoJSON 或者 GeoJSON 的请求地址)
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-77.0323, 38.9131]
},
"properties": {
"title": "Mapbox DC",
"marker-symbol": "monument"
}
},
// "data": "./lines.geojson",
"maxzoom": 22, // 最⼤层级(可选,默认值为 22)
"attribution": "", // 属性信息(可选,⽤于地图展⽰时给⽤户看的⼀些信息)
"buffer": 128, // 切⽚缓存区⼤⼩(可选,取值范围为 0 ~ 512,默认值为 128,如果取值为 512 则代表和切⽚⼤⼩⼀样)
"tolerance": 0.375, // 简化⼒度(可选,值越⼤简化⼒度越强,⼏何顶点越少,加载速度越快,默认值为 0.375)
"cluster": false, // 是否开启聚类(可选,⽤于将多个点聚类到⼀个个的群组,默认值为 false)
"clusterRadius": 50, // 每个群组的的半径(可选,默认值为 50)
"clusterMaxZoom": 12, // 每个群组的最⼤层级(⼤于指定的层级将不显⽰聚类的群组)
"lineMetrics": false, // 是否计算线的距离度量(额,有点不能理解,需要 layer 指定 line-gradient)
"generateId": false // 是否⾃动⽣成每个要素⽣成属性 id 的值
}
}
"sources": {
"image-source": {
"type": "image", // 类型(必填)
"url": "https://docs.mapbox.com/mapbox-gl-js/assets/radar.gif", // 图⽚的请求地址(必填)
"coordinates": [ // 坐标点集合(必填,指定要显⽰图⽚的坐标点)
[-80.425, 46.437],
[-71.516, 46.437],
[-71.516, 37.936],
[-80.425, 37.936]
]
}
}
"sources": {
"video-source": {
"type": "image", // 类型(必填)
"urls": [ // ⼀个或多个视频的请求地址(必填,指定多个是为了⽀持多种视频格式,按优先顺序排序)
"https://static-assets.mapbox.com/mapbox-gl-js/drone.mp4",
"https://static-assets.mapbox.com/mapbox-gl-js/drone.webm"
],
"coordinates": [ // 坐标点集合(必填,指定要显⽰视频的坐标点)
[-80.425, 46.437],
[-71.516, 46.437],
[-71.516, 37.936],
[-80.425, 37.936]
]
}
}
"layers": []
fill:填充
line:线
circle:圆点
symbol:符号
background:背景
raster:栅格
heatmap:热⼒图
hillshade:坡⾯阴影
fill-extrusion:三维填充
(1) fill
fill:填充(⽤于给多边形 polygon 进⾏填充和描边)
(2) line
line:线(⽤于绘制成⼀条条线)
"layers": [
{
"id": "fill-id", // 唯⼀ id (必填)
"type": "fill", // 类型(必填)
"metadata": { // 元数据(可选,⽤于为 layer 附加任意的属性。为避免冲突,建议添加前缀,如 mapbox:)
"mapbox:name": "test"
},
"source": "source-name", // 数据源的名称(除了 layer 的 type 为 background 外,source 必填)
"source-layer": "source-layer-name", // 数据源的图层(只有数据源 source 的 type 为 vector 时,才能设置 source-layer,其他类型的不可以设置)
"minzoom": 0, // 最⼩层级(可选,取值范围为 0 ~ 24。当 style 的 zoom ⼩于此 minzoom 时,layer 将被隐藏)
"maxzoom": 24, // 最⼤层级(可选,取值范围为 0 ~ 24。当 style 的 zoom ⼤于此 maxzoom 时,layer 将被隐藏)
"filter": [], // 过滤(可选,⽤特定的表达式过滤指定的数据源的要素。具体的表达式详见 expression)
"layout": { // 布局类属性
"visibility": "visible", // 可见性(可选,可选值为 none、visible,默认值为 visible)
},
"paint": { // 绘制类属性
"fill-antialias": true, // 填充时是否反锯齿(可选,默认值为 true)
"fill-opacity": 1, // 填充的不透明度(可选,取值范围为 0 ~ 1,默认值为 1)
"fill-pattern": "", // 填充⽤的图案(可选,这⾥填写在 sprite 雪碧图中图标名称。为了图案能⽆缝填充,图标的⾼宽需要是 2 的倍数)
"fill-color": "#000000", // 填充的颜⾊(可选,默认值为 #000000。如果设置了 fill-pattern,则 fill-color 将⽆效)
"fill-outline-color": "#000000", // 描边的颜⾊(可选,默认和 fill-color ⼀致。如果设置了 fill-pattern,则 fill-outline-color 将⽆效。为了使⽤此属性,还需要设置 fill-antialias 为 true)
"fill-translate": [0, 0], // 填充的平移(可选,通过平移 [x, y] 达到⼀定的偏移量。默认值为 [0, 0],单位:像素。)
"fill-translate-anchor": "map" // 平移的锚点,即相对的参考物(可选,可选值为 map、viewport,默认为 map)
}
}
]
剩余20页未读,继续阅读
资源评论
gis分享者
- 粉丝: 8161
- 资源: 76
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 小程序项目-基于微信小程序的智慧校园管理系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的3.18 语言课学习系统的设计与实现--微信小程序论文(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的超市售货管理平台小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的超市购物系统代码(包括源码,数据库,教程).zip
- Computex 2024英伟达主题演讲:AI时代如何在全球范围内推动新的工业革命.pdf
- 小程序项目-基于微信小程序的大学生党务学习平台小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的大学生校园兼职微信小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的大学生心理健康测评管理系统小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的电器维修系统小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的高校就业招聘系统的设计与实现(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的高校宿舍信息管理系统小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的电影交流平台小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的公考学习平台的设计与实现(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的个人健康管理系统小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的贵工程寝室快修小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的机电公司管理信息系统(小程序(包括源码,数据库,教程).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功