79078057

Date: 2024-10-11 11:43:06
Score: 2
Natty:
Report link

Очень долго искал решение этой проблемы.

Для того чтобы переориентировать ось Y. Необходимо в extent изменить точку отсчёта высоты, и сделать её отрицательной. Далее в addCoordinateTransforms нужно описать преобразование координаты по Y на отрицательную(минус на минус дают плюс) В итоге мы получим смещение нулевой координаты в левый-верхний угол.

Вырезка ключевых элементов кода:

import { Projection, addCoordinateTransforms } from 'ol/proj'
import ImageLayer from 'ol/layer/Image'
import Static from 'ol/source/ImageStatic'

...

const extent = [0, -img.height, img.width, 0]
const projection = new Projection({
        units: 'pixels',
        extent: extent,
        worldExtent: extent
      })

addCoordinateTransforms(
  projection,
  projection,
  function (coordinate) {
    return coordinate
  },
  function (coordinate) {
    return [coordinate[0], -coordinate[1]]
  })


const targetImageLayer = new ImageLayer({
  source: new Static({
     attributions: '© TODO',
     url: imageUrl,
     projection: projection,
     imageExtent: extent
  })
})
...

UPD. Openlayers v.8.2.0

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • No latin characters (2.5):
  • Low reputation (1):
Posted by: Ivan Likhomanov