Home Reference Source

src/api/MeasureAPI.js

import WKT from 'ol/format/WKT'
import LineString from 'ol/geom/LineString'
import Polygon from 'ol/geom/Polygon'
import { getArea, getDistance, getLength } from 'ol/sphere'

export class MeasureAPI {
  constructor (mainAPI, map) {
    this.mainAPI_ = mainAPI
    this.map_ = map

    this.wktParser_ = new WKT()
  }

  getLength (geom, options = {}) {
    if (options.format && options.format === 'array') {
      geom = new LineString(geom)
    } else {
      geom = this.wktParser_.readGeometryFromText(geom)
    }

    return getLength(geom, options)
  }

  getDistance (pointA, pointB, options = {}) {
    if (!options.format || options.format !== 'array') {
      pointA = this.wktParser_.readGeometryFromText(pointA).getFirstCoordinate()
      pointB = this.wktParser_.readGeometryFromText(pointB).getFirstCoordinate()
    }

    return getDistance(pointA, pointB, options)
  }

  getArea (geom, options = {}) {
    if (options.format && options.format === 'array') {
      geom = new Polygon(geom)
    } else {
      geom = this.wktParser_.readGeometryFromText(geom)
    }

    return getArea(geom, options)
  }
}