(Google Maps API - обратный геокод) Получение нулевых данных о городах (например, бразильские города) - PullRequest
1 голос
/ 02 мая 2019

В последнее время у меня проблемы с кодом, который я использовал несколько лет назад. Это Java-код Android для получения города, штата и страны с помощью API Карт Google (обратный геокод). После отправки широты, долготы сервер Google должен вернуть Город. Но сервер возвращает ноль. Я выкладываю код и экран печати проблемы. Это происходит с бразильскими городами. В некоторых странах такой проблемы нет.

Attempt_A [Город: Сан-Паулу (Население: 12 миллионов) / Штат: Сан-Паулу / Страна: Бразилия] Результат: в поле CITY возвращено значение NULL [Широта, Долгота]: [-23,590630, -46,660867]

Attempt_B [Город: Рио-де-Жанейро (Население: 6,5 миллиона человек) / Штат: Рио-де-Жанейро / Страна: Бразилия] Результат: в поле CITY возвращено значение NULL [Широта, Долгота]: [-22,972394, -43,185209]

Код ниже не работает для большинства городов Бразилии, которые я пытался проанализировать. city ​​= address.get (0) .getLocality (); // ПОЛУЧИТЬ ГОРОД

Во всех моих попытках поразить бразильские города поле города не имеет значения, PS1: у меня не было проблем в городах США и Европы. PS2: поле адреса, страна, штат и все остальное работает нормально

Я уже предпринял некоторые попытки (изменение ключа API, изменение версии API, определения Locale.ENGLISH, тестирование на эмуляторе и реальных устройствах), однако проблема остается.

//send latitude and longitude data to Google and get City,state and Country data
public void gcode(){

    Log.e(TAG_DEBUG, " gcode function ");

    Geocoder geocoder;
    List<Address> addresses;
    geocoder = new Geocoder(getApplicationContext(), Locale.ENGLISH);

    try {

        addresses = geocoder.getFromLocation(latToParse, longitToParse, 1); // Here 1 represent max location result to returned, by documents it recommended 1 to 5

        city = addresses.get(0).getLocality(); // GET CITY
        state = addresses.get(0).getAdminArea(); // GET STATE
        country = addresses.get(0).getCountryName(); // GET COUNTRY
        String postalCode = addresses.get(0).getPostalCode();
        String knownName = addresses.get(0).getFeatureName(); // Only if available else return NULL
        Log.e(TAG_DEBUG, "Country,State,City: " + country +" "+  state +" "+ city);

        String address = addresses.get(0).getAddressLine(0); //GET Address

        Log.e(TAG_DEBUG, "postalCode: " + postalCode);
        Log.e(TAG_DEBUG, "knownName: " + knownName);
        Log.e(TAG_DEBUG, "address: " + address);


        if(country!=null){
            countryStr=country;

            countryStr=countryStr.toUpperCase();
            Log.e(TAG_DEBUG, "CountryStr: "+countryStr);

        }else{
            countryStr="null";
        }


        if(state!=null){
            stateStr=state;
            stateStr=stateStr.toUpperCase();
            Log.e(TAG_DEBUG, "StateStr: "+stateStr);

        }else{
            stateStr="null";
        }


        if(city!=null){

            cityStr=city;
            cityStr=cityStr.toUpperCase();
            Log.e(TAG_DEBUG, "CityStr: "+cityStr);

        }else{
            cityStr="null";
            Log.e(TAG_DEBUG, "CityStr: "+cityStr);
        }






        geocoderOk=true;
        geocoderIntStr="1";
        Log.e(TAG_DEBUG, " geocoderOk: " +geocoderOk);


        //Display city,state,country data on editTexts
        displayCityStateCountry();




    }catch (Exception e){
        e.printStackTrace();
        Log.e(TAG_DEBUG, "IO" + e);
        geocoderOk=false;
        geocoderIntStr="2";
        Log.e(TAG_DEBUG, " geocoderOk: " +geocoderOk);


        etCity.setText("Geocoder did not worked!");

    }





}

//Display city,state,country data on editTexts
public void displayCityStateCountry(){

    etCity.setText(cityStr);
    etState.setText(stateStr);
    etCountry.setText(countryStr);

}

В коде должны отображаться страна, штат и город. Но поле города отображает ноль. Если вы попытаетесь получить адрес, все будет хорошо. Проблема возникает только с городскими данными по бразильским городам.

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