2013-04-25 4 views
1

Мне нужно преобразовать значение String в значение LatLng для использования в фрагменте GoogleMaps в приложении для Android. Строковое значение, скорее всего, будет представлено в виде «-45.654765, 65.432892».Преобразование строки в двойную для использования в LatLng/Google Maps

Я пробовал два разных способа сделать это, и оба привели к ошибкам. Во-первых, я попытался с помощью раскола() и ввод результатов в строку [], а затем с помощью доступа к каждому 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.

Может ли кто-нибудь указать мне правильное направление? Это кажется очень простым, так что я еще более запутанным, чем обычно ...

EDIT:

Данные происходит в другой деятельности, где она проходит через умысел. Деятельность, которая получает намерение имеет GEO определяется следующим образом:

public static final String GEO = "geo"; 

И намерение от предыдущей деятельности ставит гео в так:

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

Как GEO может быть окончательным и в то же время передается от другой деятельности, с помощью намерения? Ваш GEO никогда не будет иметь никакой запятой. Не могли бы вы добавить код о том, как настроено GEO? – ddmps

ответ

5

Вы должны

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

спасибо, что работает. – user2163853

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

К сожалению, не тестировалась.

Смежные вопросы