src/controls/MousePosition.js
import OlMousePosition from 'ol/control/MousePosition'
import { mixin } from '../utilities'
import { RewireMixin } from './RewireMixin'
import '../../less/mouseposition.less'
/**
* @typedef {g4uControlOptions} MousePositionOptions
* @property {function} [coordinateFormat]
*/
/**
* @extends Control
*/
export class MousePosition extends mixin(OlMousePosition, RewireMixin) {
/**
* @param {MousePositionOptions} [options={}]
*/
constructor (options = {}) {
options.className = (options.hasOwnProperty('className')) ? options.className : 'g4u-mouseposition'
const truncateToString = (x, length) => {
const lead = x.toString().match(/^[^.]*/)[0]
if (lead.length >= length) {
return lead
} else {
return x.toFixed(length - lead.length)
}
}
const digits = options.digits || 8
options.coordinateFormat = c => {
return `${truncateToString(c[0], digits)}, ${truncateToString(c[1], digits)}`
}
const dashs = '–' + '.' + '–'.repeat(digits - 1)
options.undefinedHTML = `${dashs}, ${dashs}`
super(options)
}
}