2012-12-11 27 views
1

這裏是我使用put地點串代碼:Android的位置字符串問題

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); 
+0

你的代碼對我來說看起來不錯。你測試了哪些Android版本? – Fildor

+0

@Fildor我瞄準API-17,爲API-7 +打造。奇怪的情況出現在API-10上。 – shkschneider

+0

API-10始終是越野車... SavedState,圖形,現在格式化! – Penn

回答

4

您可以使用Location Class中的public static String convert (double coordinate, int outputType)。 outputType可以是FORMAT_DEGREES,FORMAT_MINUTESFORMAT_SECONDS之一。

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

這只是另一種做法或者是你知道的解決方法嗎? – shkschneider

+0

這是推薦的方法。 –

+1

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/location/Location.java#Location.convert%28double%2Cint% 29 Android就是這麼做的。比String.format多一點努力;) – Fildor