Ali Khalil
Ali Khalil

Reputation: 41

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.

Upvotes: 0

Views: 268

Answers (1)

Mike
Mike

Reputation: 17907

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

Upvotes: 1

Related Questions