如何处理类似50°32'20.548 \\\“ N”的坐标?

时间:2019-10-28 14:41:50

标签: java android maps

我想在我的Android项目中实现地图。我已经准备好地图,坐标和所有方法,但是我发现我不知道如何处理收到的这种坐标格式:

50°32'20.548 \\“ N”

Android Studio需要这样的双格式:-33.852,151.211 ......而且我不知道如何转换。有没有人处理过类似的问题,可以帮我吗?

谢谢:)

我必须使用的坐标(无法更改):

{
  "monumentid1": {
    "name": "Bečov nad Teplou - Zámek",
    "gpsx": "50°5'8.145\\\"N",
    "gpsy": "12°50'23.468\\\"E"
  },
  "monumentid2": {
    "name": "Benešov nad Ploučnicí - Zámek ",
    "gpsx": "50°44'32.727\\\"N",
    "gpsy": "14°18'39.412\\\"E"
  },
  "monumentid3": {
    "name": "Bezděz - Hrad",
    "gpsx": "50°32'20.548\\\"N",
    "gpsy": "14°43'11.607\\\"E"

3 个答案:

答案 0 :(得分:1)

Location类具有执行DMS字符串转换(加倍)的静态方法-但首先需要调整您的字符串以匹配可接受的格式“ DD:MM:SS.SSSS”。转换后,符号需要针对半球进行调整:

public class HelloWorld
{
    public static void main(String[] args)
    {
       // The triple backslash is data author's attempt to escape the double-quote.
       String s = "50°32'20.548\\\"N";

       // Get rid of any residual backslashes
       s = s.replace("\\","");

       // split string into constituent parts using apparent separators
       String[] dms = s.split("[°'\"]");

       // form 'newS' which complies with Location.FORMAT_SECONDS
       String newS = dms[0]+":"+dms[1]+":"+dms[2];

       // and grab hemisphere (to implement sign)
       String hemi = dms[3];

       double coord = Location.convert(newS);
       if (hemi.compareTo("W") == 0 || hemi.compareTo("S") == 0) {
           coord = -coord;
       }
   }

}

答案 1 :(得分:0)

1度是60分钟,而1分钟是60秒...

例如

50°30'与50.5相同

答案 2 :(得分:0)

您应该编写一个函数,该函数接受一个String并将这些坐标转换为可以使用的数字。