1

我需要将 String 值转换为 LatLng 值,以便在 Android 应用程序的 GoogleMaps 片段中使用。字符串值可能以“-45.654765, 65.432892”的形式出现。

我尝试了两种不同的方法,但都导致了错误。首先,我尝试使用 split() 并将结果放入 String[],然后使用 parseDouble() 访问每个结果,如下所示:

String[] geo = GEO.split(",");
double lati = Double.parseDouble(geo[0]);
double lngi = Double.parseDouble(geo[1]);
LOCATION = new LatLng(lati, lngi);

这产生由ArrayIndexOutOfBoundsException引起的double lati = Double.parseDouble(geo[0]);。我不太确定为什么。

我也尝试过使用 StringTokenizer,如下:

StringTokenizer tokens = new StringTokenizer(GEO, ",");
String lat = tokens.nextToken();
String lng = tokens.nextToken();
double lati = Double.parseDouble(lat);
double lngi = Double.parseDouble(lng);
LOCATION = new LatLng(lati, lngi);

这会产生一个NoSuchElementException指向String lng = tokens.nextToken();

在这两种情况下,我正在处理的字符串GEO, 是public static final通过意图从另一个活动传递的,目前它只是硬编码为"43.75,-70.15".

LOCATIONpublic static并且 是一个初始化为 的 LatLng 变量null

谁能指出我正确的方向?这看起来很简单,所以我比平时更困惑......

编辑:

数据源自通过意图传递的不同活动。接收意图的活动GEO定义如下:

public static final String GEO = "geo";

上一个活动的意图是这样的:

          bundle.putString(PlaceActivity.GEO, geo);
4

2 回答 2

5

You should have

String loc = getIntent().getExtras().getString(PlaceActivity.GEO);
String[] geo = loc.split(",");
于 2013-04-25T03:23:13.500 回答
2

你可以只使用一个非常基本的substring

int index = GEO.indexOf(",");
String lat = GEO.substring(0, index).trim();
String lng = GEO.substring(index+1).trim();
double lati = Double.parseDouble(lat);
double lngi = Double.parseDouble(lng);
LOCATION = new LatLng(lati, lngi);

抱歉,未经测试。

于 2013-04-25T03:12:48.203 回答