Skip to content

地图瓦片服务加载

地图瓦片服务加载有两种方式:

1.在初始化时,通过配置加载

2.调用addTileLayer方法加载

1.通过初始化配置加载

在开篇的教程中,我们已经通过这种方式加载过卫星影像底图:

ts
new Viewer(el, {
        depthTestTerrain: true, //开启深度检测(遮挡关系)
        controlAsMapbox: true, //操作对齐mapbox
        imageryLayers: [
          {
            type: "tile",
            option: {
              // 卫星影像瓦片
              url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png",
            },
          },
        ],
})

结果展示:

image-20251023161249725

2.调用addTileLayer方法加载

addTileLayer方法支持两种类型的地图服务——xyz瓦片和wms地图服务

加载xyz瓦片

在上面通过配置加载卫星影像的例子中,实际上加载的地图服务就是xyz瓦片,下面我们换一个xyz地图数据源试试:

ts
 fair.addTileLayer({
      type: "tile",
      option: {
        url: "https://server.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}.png",
      },
    })

结果展示:

image-20251023161249725

加载wms服务

ts
//加载中国省级行政区划wms服务
fair.addTileLayer({
      type: "wms",
      option: {
        url: "/geoserver/YX_yimin/wms",
        layers: "YX_yimin:china_province",
        parameters: {
          transparent:"TRUE", //启用透明
          format:"image/png"
        },
      },
    })

结果展示:

image-20251023161249725

wms服务也支持通过sld_body参数动态设置样式:

ts
fair.addTileLayer({
      type: "wms",
      option: {
        url: "/geoserver/YX_yimin/wms",
        layers: "YX_yimin:china_province",
        parameters: {
          transparent: "TRUE", //启用透明
          format: "image/png",
          SLD_BODY: `<?xml version="1.0" encoding="UTF-8"?>
                        <StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns:se="http://www.opengis.net/se" version="1.1.0">
                          <NamedLayer>
                            <se:Name>china_province</se:Name>
                            <UserStyle>
                              <se:FeatureTypeStyle>
                                <se:Rule>
                                  <se:Name>Single symbol</se:Name>
                                  <se:PolygonSymbolizer>
                                    <se:Fill>
                                      <se:SvgParameter name="fill">#449911</se:SvgParameter>
                                      <se:SvgParameter name="fill-opacity">0.5</se:SvgParameter>
                                    </se:Fill>
                                    <se:Stroke>
                                      <se:SvgParameter name="stroke">#814545</se:SvgParameter>
                                      <se:SvgParameter name="stroke-width">2</se:SvgParameter>
                                      <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
                                    </se:Stroke>
                                  </se:PolygonSymbolizer>
                                </se:Rule>
                              </se:FeatureTypeStyle>
                            </UserStyle>
                          </NamedLayer>
                        </StyledLayerDescriptor>
                        `,

渲染结果:

image-20251023161249725

通过函数加载卫星影像瓦片服务