我需要将 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"
.
LOCATION
是public static
并且 是一个初始化为 的 LatLng 变量null
。
谁能指出我正确的方向?这看起来很简单,所以我比平时更困惑......
编辑:
数据源自通过意图传递的不同活动。接收意图的活动GEO
定义如下:
public static final String GEO = "geo";
上一个活动的意图是这样的:
bundle.putString(PlaceActivity.GEO, geo);