Получение названия улицы из объекта Address / Location в Android - PullRequest
16 голосов
/ 23 ноября 2010

Я пытаюсь получить название улицы моего текущего местоположения, но не могу его получить.

Я использую этот метод для получения адреса:

public Address getAddressForLocation(Context context, Location location) throws IOException {

        if (location == null) {
            return null;
        }
        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        int maxResults = 1;

        Geocoder gc = new Geocoder(context, Locale.getDefault());
        List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults);

        if (addresses.size() == 1) {
            return addresses.get(0);
        } else {
            return null;
        }
    }

И тогда я могу делать такие вещи, как.address.getLocality() и address.getPostalCode()

Но то, что я хочу, это название улицы.Как в "Поттерстрите 12".Когда я печатаю AddressLine (0) и AddressLine (1), я получаю только почтовый индекс, город и страну.

Как я могу получить название улицы, на которой я сейчас нахожусь?

Ответы [ 6 ]

14 голосов
/ 23 ноября 2010

Вы пробовали использовать getAddressLine? См. здесь для получения дополнительной информации об этом методе

Что-то подобное должно сделать (не проверено):

for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++) {
 Log.d("=Adress=",addresses.getAddressLine(i));
}
9 голосов
/ 08 января 2014

Попробуйте что-то подобное в вашем коде

String cityName=null;              
Geocoder gcd = new Geocoder(getBaseContext(),Locale.getDefault());               
List<Address>  addresses;    
try {    
   addresses = gcd.getFromLocation(location.getLatitude(), location  
                   .getLongitude(), 1);    
   if (addresses.size() > 0) 
        StreetName=addresses.get(0).getThoroughfare();
        String s = longitude+"\n"+latitude +  
        "\n\nMy Currrent Street is: "+StreetName; 
         Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();

у меня это работает :-) Удачи; -)

1 голос
/ 04 декабря 2015

getFromLocation у меня тоже не работал. Есть пара шагов, которые вы можете предпринять.

1. Сначала зайдите в Gradle и убедитесь, что вы используете новейшие игровые сервисы lib.

2. Не уточняйте, причина, по которой я не получил результатов, заключается в том, что в моем адресе было много информации. Когда я удалял почтовый индекс, каждый раз получал результаты.

3. Попробуйте онлайн API: http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false Просто замените адрес там своим.

Удачи

1 голос
/ 19 декабря 2012

Если у вас есть полный адрес (город + улица), в

address.getAddressLine(0)

Вы найдете название улицы и номер.

0 голосов
/ 21 ноября 2012

У меня была очень похожая проблема, но с названием страны я использовал эту функцию:

function getCountry(results) {
    var geocoderAddressComponent,addressComponentTypes,address;
    for (var i in results) {
      geocoderAddressComponent = results[i].address_components;
      for (var j in geocoderAddressComponent) {
        address = geocoderAddressComponent[j];
        addressComponentTypes = geocoderAddressComponent[j].types;
        for (var k in addressComponentTypes) {
          if (addressComponentTypes[k] == 'country') {
            return address.long_name;
          }
        }
      }
    }
   return 'Unknown';
 }

Вы должны быть в состоянии приспособить это, чтобы вывести название улицы без большой суеты.

Вдохновленный этим ответом

0 голосов
/ 11 февраля 2012
Geocoder gcd = new Geocoder(this, Locale.getDefault());
List<Address> addresses = 
                gcd.getFromLocation(currentLatitude, currentLongitude,100);
if (addresses.size() > 0 && addresses != null) {
                StringBuilder result = new StringBuilder();
                myaddress.setText(addresses.get(0).getFeatureName()+"-"+addresses.get(0).getLocality()+"-"+addresses.get(0).getAdminArea()+"-"+addresses.get(0).getCountryName());
}
  • getfeaturename () возвращение названия улицы
  • getlocality () город возврата
  • getadminarea () возвращаемое состояние

Вот и все ..!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...