2016-07-12 1 views
0

Я передаю данные между двумя действиями. Я хочу сделать это: когда пользователь долго нажимает на карту, открывается новое окно InfoActivity, показывающее широту, долготу и город, где был сделан длинный клик.Покажите город по длинному клику в Android

Я уже прошел лат и долго, но застрял с частью города.

@Override 
     public void onMapLongClick(LatLng arg0) { 

       Intent intent = new Intent(getActivity(), InfoActivity.class); 
       intent.putExtra("latitude", arg0.latitude); 
       intent.putExtra("longitude", arg0.longitude); 
       startActivity(intent); 

     } 

Как бы получить город, в котором карта долгое время нажата и добавить ее в мою InfoActivity.

Любая помощь приветствуется :)

+1

Возможно, вы захотите использовать Google для «обратного геокодирования». –

+0

@ Gerald Schenider сделают. Благодарю. – Kemo

ответ

1

Как бы я получить город, в котором карта давно щелкнул

Geocoder Используйте класс с arg0 для получения городом, где карта давно clicked.like :

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> allAddresses = geocoder.getFromLocation(
           arg0.latitude, arg0.longitude, 1); 

Теперь получить все детали из allAddresses которых требуется долгое время нажатия.

и добавить проход его к моему InfoActivity

Для прохождения строки между двумя деятельности см следующее сообщение:

Passing strings between activities in android

+0

Я попытался поместить этот блок кода в свой onMapLongClick, но я получаю следующую ошибку: «Geocoder geocoder = new Geocoder (this, Locale.getDefault());' - geocoder (android.content.context, Locale) в геокодировании не может быть применяется к (anonymous com.google.android.gms.maps.android mapss.onmaplongclicklistener) – Kemo

+1

@Kemo: используйте свой текущий контекст действия вместо 'this' like, если вы используете Activity, тогда используйте 'YourActivityName. this' или если использовать Fragment, тогда используйте 'getActivity()' вместо 'this' –

+0

getActivity(). У меня также есть другая ошибка - в 'geocoder.getFromLocation (arg0.latitude, arg0.longitude, 1);' получает эту ошибку - необработанное исключение java.ioexception, даже если бы я попытался: 'try { ArrayList

allAddresses = geocoder. getFromLocation (arg0.latitude, arg0.longitude, 1); } catch (IOException e) { e.printStackTrace(); } ' – Kemo

1

Вы всегда можете использовать Geocoder:

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
String cityName = addresses.get(0).getAddressLine(0);