Search code examples
javascriptvue.jsopenlayersopenlayers-5

Drawn polygon does not show in openlayers


I have to draw a polygon on openlayers Map. This is my code:

   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)

I have to store the transformed coordinates in DB, but solution #2 does not maintain the visibility of drawn poloygon. In case of solution #1, it does not gives the required formated coordinates, if I try to transform them later using

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

it does not return formated coordinates. please guide me where i am wrong to maintain the visibility of polygon and get the transformed coordinates.


Solution

  • You need to clone the geometry

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

    otherwise you wil move the feature somewhere close to point [0, 0] in view cooordinates