2021-11-09 15:28:13 +08:00
|
|
|
export function filterNonNumber (array) {
|
|
|
|
|
return array.filter(n => typeof n === 'number')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function mulAdd (nums) {
|
|
|
|
|
nums = filterNonNumber(nums)
|
|
|
|
|
|
|
|
|
|
return nums.reduce((all, num) => all + num, 0)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getTwoPointDistance (pointOne, pointTwo) {
|
|
|
|
|
const minusX = Math.abs(pointOne[0] - pointTwo[0])
|
|
|
|
|
|
|
|
|
|
const minusY = Math.abs(pointOne[1] - pointTwo[1])
|
|
|
|
|
|
|
|
|
|
return Math.sqrt(minusX * minusX + minusY * minusY)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getPolylineLength(points) {
|
|
|
|
|
const lineSegments = new Array(points.length - 1)
|
|
|
|
|
.fill(0)
|
|
|
|
|
.map((foo, i) => [points[i], points[i + 1]])
|
|
|
|
|
|
|
|
|
|
const lengths = lineSegments.map(item => getTwoPointDistance(...item))
|
|
|
|
|
|
|
|
|
|
return mulAdd(lengths)
|
|
|
|
|
}
|
2021-11-15 12:12:15 +08:00
|
|
|
|
|
|
|
|
export function get_in_positioning_id(GSAArr) {
|
|
|
|
|
let in_positioning_id = []
|
|
|
|
|
GSAArr.forEach(({ satellites }) => {
|
|
|
|
|
in_positioning_id.push(...satellites)
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return in_positioning_id
|
|
|
|
|
}
|
2021-11-23 01:17:36 +08:00
|
|
|
|
|
|
|
|
export function getNMEAObj(nmeaStr) {
|
|
|
|
|
if (!nmeaStr) return
|
|
|
|
|
|
|
|
|
|
return JSON.parse(nmeaStr)
|
|
|
|
|
}
|
2021-11-24 07:57:42 +08:00
|
|
|
|
|
|
|
|
export function getGSAGSV (nmeaStr) {
|
|
|
|
|
const nmeaObj = getNMEAObj(nmeaStr)
|
|
|
|
|
if (!nmeaObj || !nmeaObj.GSV || !nmeaObj.GSA) return null
|
|
|
|
|
|
|
|
|
|
const { GSV, GSA } = nmeaObj
|
|
|
|
|
const bd = {
|
|
|
|
|
GSVArr: GSV.filter((gsv) => gsv.talker_id === 'BD'),
|
|
|
|
|
GSAArr: GSA.filter((gsa) => gsa.talker_id === 'BD')
|
|
|
|
|
}
|
|
|
|
|
const gp = {
|
|
|
|
|
GSVArr: GSV.filter((gsv) => gsv.talker_id === 'GP'),
|
|
|
|
|
GSAArr: GSA.filter((gsa) => gsa.talker_id === 'GP')
|
|
|
|
|
}
|
|
|
|
|
const gl = {
|
|
|
|
|
GSVArr: GSV.filter((gsv) => gsv.talker_id === 'GL'),
|
|
|
|
|
GSAArr: GSA.filter((gsa) => gsa.talker_id === 'GL')
|
|
|
|
|
}
|
|
|
|
|
const ga = {
|
|
|
|
|
GSVArr: GSV.filter((gsv) => gsv.talker_id === 'GA'),
|
|
|
|
|
GSAArr: GSA.filter((gsa) => gsa.talker_id === 'GA')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return { bd, gp, gl, ga }
|
|
|
|
|
}
|