Нарисованный многоугольник не отображается в открытых слоях - PullRequest
1 голос
/ 20 мая 2019

Я должен нарисовать многоугольник на карте OpenLayers. Это мой код:

   draw = new Draw({
        source: this.vectorSource,
        type: 'Polygon'
    })
    draw.on('drawend', e => {

             // sol 1, result is not as required
             let coords = e.feature.getGeometry().getCoordinates()

             //sol 2, give correct results, but drawn polygon gone
             let coords = e..feature.getGeometry().transform('EPSG:3857', 'EPSG:4326').getCoordinates()
    }
    this.olmap.addInteraction(draw)

Мне нужно хранить преобразованные координаты в БД, но решение № 2 не поддерживает видимость нарисованного полойгона. В случае решения № 1 оно не дает требуемых форматированных координат, если я попытаюсь преобразовать их позже, используя

    transform(coords, 'EPSG:3857', 'EPSG:4326')

не возвращает форматированные координаты. пожалуйста, покажите мне, где я неправ, чтобы сохранить видимость многоугольника и получить преобразованные координаты.

1 Ответ

1 голос
/ 20 мая 2019

Вам необходимо клонировать геометрию

let coords = e..feature.getGeometry().clone().transform('EPSG:3857', 'EPSG:4326').getCoordinates();

, в противном случае вы переместите объект где-нибудь близко к точке [0, 0] в координатах вида

...