Files
deighton-ar/mobile/src/util.js
2018-04-06 17:13:09 -07:00

53 lines
1.3 KiB
JavaScript

export const geoDistance = (lat1, lng1, lat2, lng2, unit) => {
var radlat1 = Math.PI * lat1 / 180
var radlat2 = Math.PI * lat2 / 180
var theta = lng1 - lng2
var radtheta = Math.PI * theta / 180
var dist =
Math.sin(radlat1) * Math.sin(radlat2) +
Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta)
dist = Math.acos(dist)
dist = dist * 180 / Math.PI
dist = dist * 60 * 1.1515
if (unit == "K") {
dist = dist * 1.609344
} else if (unit == "N") {
dist = dist * 0.8684
}
return dist
}
export const formatLatLng = (lat, lng) =>
`${Math.abs(lat).toFixed(4)}°${lat >= 0 ? "N" : "S"}, ${Math.abs(lng).toFixed(
4
)}°${lng >= 0 ? "E" : "W"}`
export const parseLatLng = (str) => {
const [lat, lng] = str.split(", ")
return {
type: "Point",
coordinates: [
parseFloat(
(lng[lng.length - 1] === "W" ? "-" : "") +
lng.substring(0, lng.length - 2)
),
parseFloat(
(lat[lat.length - 1] === "S" ? "-" : "") +
lat.substring(0, lat.length - 2)
),
],
}
}
export const workItemTypeEnum = [
{ value: "order", text: "Work Order" },
{ value: "inspection", text: "Inspection" },
{ value: "complaint", text: "Complaint" },
]
export const pad = (num, size) => {
var s = num + ""
while (s.length < size) s = "0" + s
return s
}