@obstinado/gpx-builder
Version:
Builder of GPX files
143 lines (138 loc) • 2.54 kB
JavaScript
class Point {
/**
* @see http://www.topografix.com/gpx/1/1/#type_wptType
*/
// eslint-disable-next-line complexity, sonarjs/cognitive-complexity
constructor(lat, lon, {
ele,
time,
magvar,
geoidheight,
name,
cmt,
desc,
src,
link,
sym,
type,
fix,
sat,
hdop,
vdop,
pdop,
ageofdgpsdata,
dgpsid,
extensions
} = {}) {
this.lat = lat;
this.lon = lon;
this.ele = ele || null;
this.time = time || null;
this.magvar = magvar || null;
this.geoidheight = geoidheight || null;
this.name = name || null;
this.cmt = cmt || null;
this.desc = desc || null;
this.src = src || null;
this.link = link || null;
this.sym = sym || null;
this.type = type || null;
this.fix = fix || null;
this.sat = sat || null;
this.hdop = hdop || null;
this.vdop = vdop || null;
this.pdop = pdop || null;
this.ageofdgpsdata = ageofdgpsdata || null;
this.dgpsid = dgpsid || null;
this.extensions = extensions || null;
} // eslint-disable-next-line complexity, sonarjs/cognitive-complexity
toObject() {
const {
lat,
lon,
ele,
time,
magvar,
geoidheight,
name,
cmt,
desc,
src,
link,
sym,
type,
fix,
sat,
hdop,
vdop,
pdop,
ageofdgpsdata,
dgpsid,
extensions
} = this;
return {
attributes: {
lat,
lon
},
...(ele ? {
ele
} : {}),
...(time ? {
time
} : {}),
...(magvar ? {
magvar
} : {}),
...(geoidheight ? {
geoidheight
} : {}),
...(name ? {
name
} : {}),
...(cmt ? {
cmt
} : {}),
...(desc ? {
desc
} : {}),
...(src ? {
src
} : {}),
...(link ? {
link: link.toObject()
} : {}),
...(sym ? {
sym
} : {}),
...(type ? {
type
} : {}),
...(fix ? {
fix
} : {}),
...(sat ? {
sat
} : {}),
...(hdop ? {
hdop
} : {}),
...(vdop ? {
vdop
} : {}),
...(pdop ? {
pdop
} : {}),
...(ageofdgpsdata ? {
ageofdgpsdata
} : {}),
...(dgpsid ? {
dgpsid
} : {}),
...(extensions && Object.keys(extensions).length > 0 ? {
extensions
} : {})
};
}
}
export { Point as default };