2016-05-05 2 views
3

В Google Places API для Android я использую PlaceAutocompleteFragment для отображения города/страны.
Здесь я получаю адрес, имя, placeId и т. Д.
Place объект содержит только эти поля.
Получить код страны из PlaceAutocompleteFragment android (API Google Адресов)

@Override 
public void onPlaceSelected(Place place) { 

    Log.i(TAG, "Place Selected: " + place.getName()); 

    // Format the returned place's details and display them in the TextView. 
    mPlaceDetailsText.setText(formatPlaceDetails(getResources(), place.getName(), place.getId(), 
      place.getAddress(), place.getPhoneNumber()+" "+place.getAttributions()+" :: "+place.getLocale(), place.getWebsiteUri())); 

}

Но я хочу код страны тоже. Есть ли способ получить код страны из мест API? Если нет, есть ли альтернативный сервис для получения названия страны & кода во время набора?

+0

код страны какого телефона или что-то еще объясните пожалуйста ?? – Nowshad

+0

@Nowshad: Это не телефон. Когда я печатаю в PlaceAutocompleteFragment, я получаю список городов/стран. Из выбранного результата я не получу код страны. –

ответ

8

С Местом объектом извлеченным, вы можете получить объект Locale, связанный:

Locale locale = place.getLocale(); 

С помощью этого Locale объекта, то вы можете получить код страны через:

locale.getCountry(); 

И название страны с :

locale.getDisplayCountry(); 

Вы можете посмотреть более доступные методы в документах: http://developer.android.com/reference/java/util/Locale.html

EDIT:

Если Locale от площади объекта нуль вы можете использовать Geocoder, чтобы получить информацию от GPS-координаты:

LatLng coordinates = place.getLatLng(); // Get the coordinates from your place 
Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 

List<Address> addresses = geocoder.getFromLocation(
       coordinates.latitude, 
       coordinates.longitude, 
       1); // Only retrieve 1 address 
Address address = addresses.get(0); 

Затем вы можете вызывать эти методы, чтобы получить Вы хотите

address.getCountryCode(); 
address.getCountryName(); 

Другие методы в объектах Address : http://developer.android.com/reference/android/location/Address.html

Помните, что методы Geocoder должны быть вызваны в фоновый поток, чтобы не блокировать пользовательский интерфейс и что он также не мог получить ответ.

+0

место.getLocale() дает null. –

+1

Я отредактировал мой ответ – Gauthier

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