Android位置到字符串问题

时间:2012-12-11 10:20:36

标签: java android android-location

以下是我使用put位置到字符串的代码:

public static String locationStringFromLocation(final Location location) {
    return String.format("%.3f %.3f", location.getLatitude(), location.getLongitude());
}

从其他一些设备,我不时得到: -7.2900002123788E-4 7.270000060088933E-4作为位置字符串,而不是-7.290 7.270

  • 有人对此有所了解吗?
  • 如何改进我的代码?

修改

更新了代码。 这会解决这个问题吗?

DecimalFormat decimalFormat = new DecimalFormat("#.###");
if (location != null) {
    final String latitude = decimalFormat.format(Float.valueOf(Location.convert(location.getLatitude(), Location.FORMAT_DEGREES)));
    final String longitude = decimalFormat.format(Float.valueOf(Location.convert(location.getLongitude(), Location.FORMAT_DEGREES)));
    return latitude + " " + longitude;
}
return decimalFormat.format(0.0F) + " " + decimalFormat.format(0.0F);

2 个答案:

答案 0 :(得分:4)

您可以使用位置分类中的public static String convert (double coordinate, int outputType)。 outputType可以是FORMAT_DEGREESFORMAT_MINUTESFORMAT_SECONDS之一。

public static String locationStringFromLocation(final Location location) {
    return Location.convert(location.getLatitude(), Location.FORMAT_DEGREES) + " " + Location.convert(location.getLongitude(), Location.FORMAT_DEGREES);
}

答案 1 :(得分:0)

一行,一种方法,方便的解决方法:

String.substring(beginIndex,finalIndex)

所以在您的情况下:

latInDecimal = lat.substring(0,5)
lngInDecimal = lng.substring(0,5)