Проблема с вышеупомянутым подходом, а также многими другими примерами в Интернете заключается в том, что они пытаются получить данные только от первого возвращенного поставщика с addresses.get(0).getPostalCode()
. Когда вы выполняете код List<Address> addresses = getAddresses()
, он получает список поставщиков, каждый из которых предоставляет свои собственные данные. Не все поставщики будут содержать одинаковые данные.
У меня была такая же проблема с получением почтового индекса. Во время моих начальных тестов я обнаружил, что получаю данные от 6 поставщиков. Только 2 из этих 6 провайдеров вернули почтовый индекс. Первый поставщик, к которому я пытался получить доступ с address.get(0).getPostalCode()
, не был одним из них. Более подходящим подходом было бы перебрать всех возвращенных провайдеров, чтобы увидеть, кто вернул данные, которые я искал.
Что-то вроде следующего должно работать. Скорее всего, один из провайдеров вернет почтовый индекс. Это можно сделать для любых данных геокодирования, которые вам нужны поставщиками.
List<Address> address = gc.getFromLocation(myLatitude, myLongitude, 10);
if (address.size() > 0) {
strZipcode = address.get(0).getPostalCode();
//if 1st provider does not have data, loop through other providers to find it.
count = 0;
while (strZipcode == null && count < address.size()) {
strZipcode = address.get(count).getPostalCode();
count++;
}
}