字符串到度坐标

时间:2014-01-30 15:34:08

标签: android location

我需要将位置从Location转换为String以在EditText中显示。然后,我需要再次将这些字符串转换回坐标以将其设置为位置对象。

这就是我的所作所为:

String latitude = mLocation.convert(mLocation.getLatitude(), mLocation.FORMAT_DEGREES);
String longitude = mLocation.convert(mLocation.getLongitude(), mLocation.FORMAT_DEGREES);

latitudeEditText.setText(latitude);
longitudeEditText.setText(longitude);

这样,我将43.56432之类的内容转换为43,56432

现在,我需要将此值从EditText设置回Location。这就是我的工作:

String latitude = latitudeEditText.getText().toString();
String longitude = longitudeEditText.getText().toString();

mLocation.setLatitude(mLocation.convert(latitude));
mLocation.setLongitude(mLocation.convert(longitude));

但是当mLocation.convert(latitude)投掷IllegalArgumentException

在文档sais中:

public static double convert (String coordinate)

Added in API level 1
Converts a String in one of the formats described by FORMAT_DEGREES, 
    FORMAT_MINUTES, or FORMAT_SECONDS into a double.

Throws
NullPointerException    if coordinate is null
IllegalArgumentException    if the coordinate is not in one of the valid formats.

所以,这告诉我字符串不是DEGREE格式,但这不可能,因为我使用booth方式使用convert()方法来做正确的事。

1 个答案:

答案 0 :(得分:1)

刚刚尝试了快速测试,一切都按预期工作:

Location mLocation = new Location("");
mLocation.setLatitude(43.56432);

String latitude = Location.convert(mLocation.getLatitude(), Location.FORMAT_DEGREES);

Log.d(TAG, "Latitude: " + latitude);

double latitudeDouble = Location.convert(latitude);

Log.d(TAG, "Latitude double: " + latitudeDouble);

输出:

01-30 16:12:53.628: D/LocationActivity(29240): Latitude: 43.56432
01-30 16:12:53.628: D/LocationActivity(29240): Latitude double: 43.56432

您的EditText上是否有任何TextWatchers或其他任何逻辑用逗号替换句点?

另外,请确保静态访问静态字段。