openlayer6修改地图颜色

有位老哥需要先拍在这,完事更新细节,重点是中间的函数

this.tileLayer = new TileLayer({
  source: new XYZ({
    url: this.urlTiandi + this.keyTiandi,
    layer: 'img',
    style: 'default',
    matrixSet: 'c',
    format: 'tiles',
    wrapX: false,
    tileLoadFunction: function(imageTile, src) {
      const img = new Image()
      img.crossOrigin = ''
      img.onload = function() {
        const canvas = document.createElement('canvas')
        const w = img.width
        const h = img.height
        canvas.width = w
        canvas.height = h
        const context = canvas.getContext('2d')
        context.drawImage(img, 0, 0, w, h, 0, 0, w, h)
        const imageData = context.getImageData(0, 0, w, h)
        for (var i = 0; i < imageData.height; i++) {
          for (var j = 0; j < imageData.width; j++) {
            var x = (i * 4) * imageData.width + (j * 4)
            imageData.data[x] = imageData.data[x + 1] = imageData.data[x + 2] = imageData.data[x] * 0.3 + imageData.data[x + 1] * 0.59 + imageData.data[x + 2] * 0.11
            imageData.data[x] = 165 - imageData.data[x]
            imageData.data[x + 1] = 255 - imageData.data[x + 1]
            imageData.data[x + 2] = 255 - imageData.data[x + 2]
            // imageData.data[x] = imageData.data[x + 1] = imageData.data[x + 2] = (r + g + b) / 3
          }
        }
        context.putImageData(imageData, 0, 0)
        imageTile.getImage().src = canvas.toDataURL('image/png')
      }
      img.src = src
    }
  }),
  format: new GeoJSON()
})
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值