meface/docs/article/gis/mapbox/01startup.md

3.0 KiB
Raw Blame History

title data author catageries tags
Key concepts 2023-11-05 ac
GIS
Mapbox

关键概念

1. Mapbox GL

Mapbox GL JS中的“GL”指的是Mapbox GL这是一个图形库可以在任何兼容的web浏览器中使用OpenGL将2D和3D Mapbox地图渲染为动态视觉图形而无需使用额外的插件。

2. 客户端渲染

Mapbox GL JS依赖于客户端渲染。Mapbox GL JS地图是通过在浏览器(不是服务器)上结合矢量瓦片和样式规则来动态呈现的,这使得改变地图的样式和显示数据可以及时响应用户,改善用户体验。

3. Map

mapboxgl.Map类是每个Mapbox GL JS项目的基础。

4. Layers 图层

Mapbox GL JS地图可以由几个层组成,这些层提供可视元素和地图数据source。每一层都提供了关于渲染器render应该如何在浏览器中绘制特定数据的规则,并且渲染器使用这些层在屏幕上绘制地图。

Mapbox GL JSaddLayer方法为地图的style样式添加了一个Mapbox样式层。addLayer唯一需要的参数是一个Mapbox样式的layer对象。

它还接受一个可选的before参数生成的新图层会在该参数指定的图层上面。如果省略这个参数那么渲染器将在地图的顶部绘制图层最上面

5. Asynchronous

由于在Mapbox GL JSlayers是异步的获取数据。所以连接到Mapbox GL JS的代码经常使用事件绑定在正确的时间改变地图。例如:

map.on('load', () => {
    map.addLayer({
        id: 'terrain-data',
        type: 'line',
        source: {
            type: 'vector',
            url: 'mapbox://mapbox.mapbox-terrain-v2'
        },
        'source-layer': 'contour'
    });
});

这个示例代码绑定了map的load事件addLayer只在地图的资源source(包括样式style)被加载之后才能被正确加载。如果资源未加载运行map它会触发一个错误因为你想要添加一个图层的样式还不存在。

6.图层源Layer source

在加载新图层时,必须定义一个图层源source,它接受一个typeurl参数,用于指定源的数据类型和地址,包括geojson数据。有6中数据类型

  • vector tiles:
  • raster tiles:
  • raster-dem
  • GeoJSON
  • Image
  • video

每种类型都有自己的属性,详细信息可以查看Mapbox的样式规范的Sources章节。

瓦片集合(Tilesets)包含多个子集的数据叫做source layers。例如: Mapbox Streets tileset包含了有roadsparks和其他子数据集,当你只想加载其中某些图层时,可以使用source-layer属性指定数据集。

map.on('load', () => {
    map.addLayer({
        id: 'rpd_parks',
        type: 'fill',
        source: {
            type: 'vector',
            url: 'mapbox://mapbox.3o7ubwm8'
        },
        'source-layer': 'RPD_Parks'
    });
});