Source: map/utils/formatLatLng.js

import { roundNumber } from "../../utils/utils.js";
import { convertDecimalDegreeToDegreeMinutes } from "./convertDecimalDegreeToDegreeMinutes.js";

/**
 * Format lat/lng to a readable string with decimal degrees
 * 
 * @param {number} lat
 * @param {number} lng
 * @returns {string} formatted lat/lng
 * @memberof vef.map.utils
 */
export function formatLatLng(lat, lng, mode) {
    if (mode == "degreeminutes") {
        const latDms = convertDecimalDegreeToDegreeMinutes(lat, true);
        const readableLat = `${latDms.degree}° ${latDms.minutes}' ${latDms.seconds}" ${latDms.orientation}`;
        const longDms = convertDecimalDegreeToDegreeMinutes(lng, false);
        const readableLong = `${longDms.degree}° ${longDms.minutes}' ${longDms.seconds}" ${longDms.orientation}`;
        return readableLat + ", " + readableLong;
    } else {
        lat = roundNumber(Math.abs(lat), 2, true) + ((lat < 0) ? "° S" : "° N");
        lng = roundNumber(Math.abs(lng), 2, true) + ((lng < 0) ? "° W" : "° E");
        return `${lat}, ${lng}`;
    }
}