Cesium加载超图服务

Cesium加载超图服务

引入下面封装好的js文件

export class SuperMap2DImagryProvider {
  constructor(superMapUrl, options) {
    this.options = Object.assign({}, {
      minimumLevel: 0,
      maximumLevel: 18,
      epsgcode: 4326,
      token: ""
    }, options);
    this.scales84 = [3.38032714321E-9, 6.76065428641E-9, 1.352130857282E-8, 2.704261714564E-8, 5.408523429128E-8,
      1.0817046858257E-7, 2.1634093716514E-7, 4.3268187433028E-7, 8.6536374866056E-7, 1.73072749732112E-6,
      3.46145499464224E-6, 6.92290998928448E-6, 1.3845819978568952E-5, 2.7691639957137904E-5,
      5.538327991427581E-5, 1.1076655982855162E-4, 2.2153311965710323E-4, 4.4306623931420646E-4,
      8.861324786284129E-4, 0.0017722649572568258, 0.0035445299145136517, 0.007089059829027303
    ]
    this.scalesweb = [1.69016357160E-9, 3.38032714321E-9, 6.76065428641E-9, 1.352130857282E-8, 2.704261714564E-8,
      5.408523429128E-8, 1.0817046858257E-7, 2.1634093716514E-7, 4.3268187433028E-7, 8.6536374866056E-7,
      1.73072749732112E-6, 3.46145499464224E-6, 6.92290998928448E-6, 1.3845819978568952E-5,
      2.7691639957137904E-5, 5.538327991427581E-5, 1.1076655982855162E-4, 2.2153311965710323E-4,
      4.4306623931420646E-4, 8.861324786284129E-4, 0.0017722649572568258, 0.0035445299145136517,
      0.007089059829027303
    ]

    this.layer = this.createSuperMapLayer(superMapUrl, this.options)
  }

  createSuperMapLayer (superMapUrl, options) {
    const rectangle = Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)
    const epsgcode = options.epsgcode
    let tilingScheme = ''
    let minlevel = 0
    let maxlevel = 22
    let originx = 0
    let originy = 0

    if (epsgcode === 4326) {
      tilingScheme = new Cesium.GeographicTilingScheme({
        numberOfLevelZeroTilesX: 2,
        numberOfLevelZeroTilesY: 1
      })
      originx = -180
      originy = 90
      if (options.minimumLevel !== undefined) {
        minlevel = options.minimumLevel
      } else {
        minlevel = 0;
      }
      if (options.maximumLevel !== undefined) {
        maxlevel = options.maximumLevel
      } else {
        maxlevel = 22;
      }
    }
    if (epsgcode === 3857) {
      tilingScheme = new Cesium.WebMercatorTilingScheme()
      originx = -20037508.34
      originy = 20037508.34
      if (options.minimumLevel !== undefined) {
        console.log("not undefined")
        minlevel = options.minimumLevel
      } else {
        minlevel = 0;
      }
      if (options.maximumLevel !== undefined) {
        maxlevel = options.maximumLevel
      } else {
        maxlevel = 22;
      }
    }

    const mapUrl = `${superMapUrl}/tileImage.png?transparent=true&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&token=${options.token}&origin={'x':${originx},'y':${originy}}`

    const layerProvider = new Cesium.UrlTemplateImageryProvider({
      url: mapUrl,
      rectangle: rectangle,
      minimumLevel: minlevel || 0,
      maximumLevel: maxlevel || 22,
      tilingScheme: tilingScheme,
      customTags: {
        scale: (imageryProvider, x, y, level) => {
          if (epsgcode === 4326) {
            return this.scales84[level]
          }
          if (epsgcode === 3857) {
            return this.scalesweb[level]
          }
        }
      }
    });
    return layerProvider
  }
}

使用如下

// 定义超图的地地图址 url 超图服务地址
    const layerProvider = new SuperMap2DImagryProvider(url, { token: serverToken })

//在cesium初始化中加入

      imageryProvider: layerProvider.layer,

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LBY_XK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值