我需要将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
的{{1}}。
在这两种情况下,我正在处理的字符串String lng = tokens.nextToken();
都是GEO
,并通过意图从另一个活动传递,目前它只是硬编码为public static final
。
"43.75,-70.15"
是LOCATION
,是一个初始化为public static
的LatLng变量。
有人能指出我正确的方向吗?这看起来很简单,所以我比平时更加困惑......
编辑:
数据来源于通过意图传递的不同活动。接收意图的活动的null
定义如下:
GEO
前一项活动的意图将地理位置改为:
public static final String GEO = "geo";
答案 0 :(得分:5)
你应该
String loc = getIntent().getExtras().getString(PlaceActivity.GEO);
String[] geo = loc.split(",");
答案 1 :(得分: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);
抱歉,未经测试。
答案 2 :(得分:0)
它告诉我你的问题是由GEO等于“”引起的。你能否包括如何设置GEO?