Android 位置将经纬度从 DMS 格式更改为双倍
Posted
技术标签:
【中文标题】Android 位置将经纬度从 DMS 格式更改为双倍【英文标题】:Android location change Latitude and Longitude from DMS format to double 【发布时间】:2016-01-10 19:50:56 【问题描述】:我有这种位置格式 (24°13'30.92"N,55°45'51.94"E),我需要通过 android 将其转换为像 (24.225275, 55.764417) 这样的双精度值。
我尝试了类似的方法,但没有成功
String lonStr="24°13'30.92"N";
Double lon=Location.convert(lonStr);
【问题讨论】:
值在degree,minute ,second
和方向
是的,我知道,我想将其转换为双精度值
在您的onLocationChange(Location location)
中访问location.getLongitude()
和location.getLatitude()
substring
和 indexOf
将帮助您检查我的答案。
【参考方案1】:
使用
substring
和indexOf
提取分钟和秒分别除以60和3600和 最后加上degree部分。
String str="24°13'30.92\"N,55°45'51.94\"E";
String s[]=str.split(",");
double lat=Integer.parseInt(s[0].substring(0,s[0].indexOf("°")))+(double)Integer.parseInt(s[0].substring(s[0].indexOf("°")+1, s[0].indexOf("'")))/60+ Double.parseDouble(s[0].substring(s[0].indexOf("'")+1, s[0].indexOf("\"")))/3600;
// same for longitude
System.out.println(String.format("%.6f", lat));
输出:
24.225256
【讨论】:
以上是关于Android 位置将经纬度从 DMS 格式更改为双倍的主要内容,如果未能解决你的问题,请参考以下文章
如何?编码 Android 应用程序以将用户的位置设置更改为关闭?
将版本从 MAJOR.MINOR 更改为 MAJOR.MINOR.PATCH