将String转换为Double以在LatLng / Google Maps中使用

时间:2013-04-25 03:03:15

标签: android string google-maps-android-api-2

我需要将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";

3 个答案:

答案 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?

相关问题