将纬度和经度转换为十进制值

新手上路,请多包涵

我有以下形式的 GPS 信息:

北纬 36°57’9” 西经 110°4’21”

我可以使用 Chris Veness 的 javascript 函数 将度、分和秒转换为数字度,但首先需要将 GPS 信息解析为单独的纬度和经度字符串(带有 NSEW 后缀)。我已经阅读了关于 stackoverflow 的相关帖子,但我不是正则表达式专家(也不是程序员),需要一些解析功能方面的帮助。将此字符串解析为纬度和经度以便在转换函数中使用的最佳方法是什么?

所有这一切的结果将是一个 Web 链接,可以单击该链接以查看 Google 地图位置表示。

原文由 Joe Colson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 493
1 个回答

要解析您的输入,请使用以下内容。

 function ParseDMS(input) {
    var parts = input.split(/[^\d\w]+/);
    var lat = ConvertDMSToDD(parts[0], parts[1], parts[2], parts[3]);
    var lng = ConvertDMSToDD(parts[4], parts[5], parts[6], parts[7]);
}

以下内容会将您的 DMS 转换为 DD

 function ConvertDMSToDD(degrees, minutes, seconds, direction) {
    var dd = degrees + minutes/60 + seconds/(60*60);

    if (direction == "S" || direction == "W") {
        dd = dd * -1;
    } // Don't do anything for N or E
    return dd;
}

所以你的输入会产生以下内容:

 36°57'9" N  = 36.9525000
110°4'21" W = -110.0725000

十进制坐标可以输入谷歌地图以通过 GLatLng(lat, lng)谷歌地图API )获取点

原文由 Gavin Miller 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题