Cesium 加载地图信息

Cesium中提供了多种ImageryProvider方式,来满足用户的实际需求。
Cesium中BaseLayerPicker控件提供了各类地图影像服务,但是有时候我们要引入自己的地图信息。

Cesium 查询文档:https://cesium.com/docs/cesiumjs-ref-doc/

Cesium目前支持的影像服务类型有:

  1. ArcGisMapServerImageryProvider
    支持ArcGIS Online和Server的相关服务
    Cesium提供了ArcGisMapServerImageryProvider,可以方便的加载ArcGIS online和Server上的数据。
    在这里插入图片描述

  2. BingMapsImageryProvider
    Bing地图影像,可以指定mapStyle,详见BingMapsStyle类
    在这里插入图片描述

  3. ImageryProvider
    基类,所有的影像服务最终都基于此类,如果你需要扩展新的Provider也会继承该类

  4. UrlTemplateImageryProvider
    指定url的format模版,方便用户实现自己的Provider,比如国内的高德,腾讯等影像服务,url都是一个固定的规范,都可以通过该Provider轻松实现。而OSM也是通过该类实现的。
    在这里插入图片描述

const viewer = new Cesium.Viewer('cesiumContainer', {
      // 设置基础图层
      imageryProvider: new Cesium.UrlTemplateImageryProvider({
        url: BaseImage,
        // 是否显示来源信息
        enablePickFeatures: false
      }),
      // 是否显示baseLayer控件
      baseLayerPicker: false
    })
  1. createOpenStreetMapImageryProvider

    OSM影像服务,根据不同的url选择不同的风格。

    Cesium提供了基于OSM的三个服务地址,可供加载:OpenStreetMap、watercolor、toner。
    在这里插入图片描述
    在三维影像服务中,因为LOD的策略,可能会出现相邻的Tile中Z值不相同,大部分情况下不会导致问题,但有时候,可能相交处是文字,则可能会出现半个字的问题。因此,在三维中加载矢量的影像服务,还是有不少局限性的。
    在这里插入图片描述

  2. createTileMapServiceImageryProvider
    看文档是根据MapTiler规范,貌似是可以自己下载瓦片,发布服务,类似ArcGIS影像服务的过程

  3. GoogleEarthImageryProvider
    企业级服务

  4. MapboxImageryProvider

    Mapbox影像服务,根据mapId指定地图风格。

    Cesium提供了MapBox的加载方式。同时提供了mapbox.satellite、mapbox.streets、mapbox.streets-basic三种风格。
    在这里插入图片描述

  5. SingleTileImageryProvider

单张图片的影像服务,适合离线数据或对影像数据要求并不高的场景下。

如果你对影像数据没有过多要求,或者是在离线环境下,SingleTileImageryProvider应该能够满足你的需要,只需要一张本地的图片,就可以创建影像服务。

url可以是相对该页面的相对路径,也可以是一个http的链接形式。因为该Provider仅支持经纬度投影,图片宽高比最好为2:1,否则会有拉伸。

  1. WebMapServiceImageryProvider
    符合WMS规范的影像服务都可以通过该类封装,指定具体参数实现

  2. WebMapTileServiceImageryProvider
    服务WMTS1.0.0规范的影像服务,都可以通过该类实现,比如国内的天地图

  3. TileCoordinatesImageryProvider
    渲染每一个瓦片的围,方便调试

  4. GridImageryProvider
    渲染每一个瓦片内部的格网,了解每个瓦片的精细度

备注1. 在不通过控件指定影像服务时,需要指定baseLayerPicker(baseLayer控件是否显示)为false,否则会报错。

备注2:new Cesium.Viewer 里面设置的是基础控件,下面代码是移除控件,可用于移除默认imagery

//移除基础控件
viewer.imageryLayers.remove(viewer.imageryLayers.get(0))

备注3:

//显示来自地球上单个图像的提供者的平铺图像数据的图像层
//属性 imageryProvider 是图像提供者
new Cesium.ImageryLayer(imageryProvider, options)

//使用给定的图像提供者创建一个新图层,并将其添加到集合中。
new Cesium.ImageryLayer.addImageryProvider(imageryProvider, index)

Provider 叠加

ImageryLayerCollection类是一个图层管理器,可以调整多个图层之间的顺序,添加和删除等。

添加新的地图并增加到现有的地图集合中:

new Cesium.ImageryLayer.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ url: BaseVector }))

参考:https://www.cnblogs.com/fuckgiser/p/5647429.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值