2013-04-25 54 views
1

我需要將字符串值轉換爲LatLng值以便在Android應用程序的GoogleMaps片段中使用。字符串值可能會以「-45.654765,65.432892」的形式出現。將字符串轉換爲Double以便在LatLng/Google Maps中使用

我已經嘗試了兩種不同的方式來做到這一點,並且都導致了錯誤。首先,我已經採用分體式(),並把結果放到一個String []試過,然後訪問每個使用parseDouble(),如下所示:

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

這產生引起double lati = Double.parseDouble(geo[0]);一個ArrayIndexOutOfBoundsException。我不確定爲什麼。

我也使用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"; 

和以往活動的意圖提出Geo在這樣的:

  bundle.putString(PlaceActivity.GEO, geo); 
+0

GEO怎麼能是最終的,同時從另一個活動通過意圖傳遞?您的GEO從未設置過任何逗號。你可以在GEO的設置上添加一些代碼嗎? – ddmps 2013-04-25 03:09:58

回答

5

你應該有

String loc = getIntent().getExtras().getString(PlaceActivity.GEO); 
String[] geo = loc.split(","); 
+0

非常感謝,這工作。 – user2163853 2013-04-25 03:29:57

0

這接縫,我認爲你的問題是由GEO引起等於「」。你能否包括GEO的設置?

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); 

對不起,未經測試。

相關問題