gpt4 book ai didi

javascript - 如何将经度从十进制度转换为 DMS 格式?

转载 作者:数据小太阳 更新时间:2023-10-29 04:01:24 27 4
gpt4 key购买 nike

假设我有一个经纬度:38.898556,-77.037852。如何将其转换为 DMS?

预期输出是:

38 53 55 N
77 2 16 W

希望能够接受纬度和经度作为函数中的输入参数。

当前函数如下:

function convertDMS( lat, lng ) {

var convertLat = Math.abs(lat);
var LatDeg = Math.floor(convertLat);
var LatMin = (Math.floor((convertLat - LatDeg) * 60));
var LatCardinal = ((lat > 0) ? "n" : "s");

var convertLng = Math.abs(lng);
var LngDeg = Math.floor(convertLng);
var LngMin = (Math.floor((convertLng - LngDeg) * 60));
var LngCardinal = ((lng > 0) ? "e" : "w");

return LatDeg + LatCardinal + LatMin + " " + LngDeg + LngCardinal + LngMin;
}

最佳答案

function toDegreesMinutesAndSeconds(coordinate) {
var absolute = Math.abs(coordinate);
var degrees = Math.floor(absolute);
var minutesNotTruncated = (absolute - degrees) * 60;
var minutes = Math.floor(minutesNotTruncated);
var seconds = Math.floor((minutesNotTruncated - minutes) * 60);

return degrees + " " + minutes + " " + seconds;
}

function convertDMS(lat, lng) {
var latitude = toDegreesMinutesAndSeconds(lat);
var latitudeCardinal = lat >= 0 ? "N" : "S";

var longitude = toDegreesMinutesAndSeconds(lng);
var longitudeCardinal = lng >= 0 ? "E" : "W";

return latitude + " " + latitudeCardinal + "\n" + longitude + " " + longitudeCardinal;
}

这里解释一下这段代码是如何工作的:

  • 纬度和经度的处理方法几乎相同,所以我将其抽象为 toDegreesMinutesAndSeconds 函数。这将返回一个字符串,显示度、分和秒。
    • 此函数将从坐标开始并 chop 它。这个值为正,就是你的学位。
    • 小数部分需要转换为分钟。我们取四舍五入的剩余部分,然后乘以 60。
    • 我们应用相同的逻辑来获取秒数:因此我们仅对字符串使用 chop 的数字,但我们保留未 chop 的数字以获取小数部分。
  • 最后,我们检查坐标的原始值是正值还是负值。对于纬度,正数(或零)为北,否则为南。对于经度,正数(或零)为东,否则为西。

关于javascript - 如何将经度从十进制度转换为 DMS 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com