Геокодер getAddressLine (0) работает, но не getLocality ()? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь получить пользователей города по местоположению, но я не могу получить только город!

Я перепробовал почти все, во что верю, но, похоже, ничего не работает, или, на самом деле, единственная вещь, которая работает для получения информации о пользователях по местоположению, это "getAddressLine (0)".

Ниже приведенокод

        Geocoder geocoder;
        List<Address> addresses;
        geocoder = new Geocoder(context, Locale.getDefault());

        String city="unknown";

        try {
            addresses = geocoder.getFromLocation(mLastLocation.getLatitude(), mLastLocation.getLongitude(), 1);

        } catch (Exception e) {

            Log.d(TAG, "getAddress failed: " + e.getMessage());
            e.printStackTrace();
            return "Couldn't find city!";
        }

        if(addresses != null && addresses.size() > 0) {

            city = addresses.get(0).getAddressLine(0); // Returns full address!

            // city = addresses.get(0).getLocality(); // Returns only an empty string " ".
        }

        return city;

Итак, мне интересно, как я мог получить только CITY, а не полный адрес.Кроме того, ПОЧЕМУ getLocality () возвращает бесполезную пустую строку?

Мне все еще интересно, почему getLocality () не работает,

, но я создал временное решение, как показано нижекод:

if(addresses != null && addresses.size() > 0) {

        String address = addresses.get(0).getAddressLine(0);   // StreetAddress -> StreetAddress Number -> Postal Code -> City -> Country
        String[] splitAddress = address.split(" ");     // Splits address where there is a space, creating array with 5 index. Index 4 should be CITY!

        city=splitAddress[4].substring(0,splitAddress[4].length()-1);   // Saves city into city-string, and removes a comma from the getAddressLine(0)!

        Log.d("SplittedAddress", Arrays.toString(splitAddress));
    }

1 Ответ

0 голосов
/ 20 июня 2019

Если вы хотите город, попробуйте:

String city = addresses.get(0).getAddressLine(1);
...