WedX - журнал о программировании и компьютерных науках

Google Api не обновляет почтовый индекс каждый раз для данного города, штата, страны | Обратное геокодирование

Я попытался получить почтовый индекс с помощью обратного геокодирования, но для некоторых адресов, например: Сиань, Шэньси, Китай Гуйлинь, Гуанси, Китай, я не могу получить почтовый индекс. Есть ли способ убедиться, что Google Api вернет почтовый индекс для данного адреса с помощью обратного геокодирования.

Пожалуйста, проверьте приведенный ниже код, который я использовал для получения lat-lng для «города, штата, страны» и почтового индекса с этим lat-lng.

Точка входа для получения почтового индекса — searchPostalCode.

    const Geocoder = geocoder => {
    const extendedGeocoder = {
        searchLatLang: address => {
            const google = window.google
            return new Promise((resolve, reject) => {
                geocoder.geocode({
                    address
                }, (addressResults, addressStatus) => {
                    if (addressStatus === google.maps.GeocoderStatus.OK) {
                        const addressResult = addressResults[0]
                        if (addressResult) {
                            const {
                                location: {
                                    lat, lng
                                }
                            } = addressResult.geometry
                            resolve({
                                lat: lat(),
                                lng: lng()
                            })
                        } else {
                            reject()
                        }
                    } else {
                        reject()
                    }
                })
            })
        },

        extractPostalCode: results => {
            return results.reduce((currentPostalCode, address) => {
                const newPostalCode = address.address_components.reduce(
                    (postalCodeValue, component) => {
                        return component.types[0] === 'postal_code' && !postalCodeValue ? component.long_name : postalCodeValue
                    },
                    null
                )
                return newPostalCode && !currentPostalCode ? newPostalCode : currentPostalCode
            }, null)
        },

        searchPostalCode: address => {
            const google = window.google
            return new Promise((resolve, reject) => {
                return extendedGeocoder
                    .searchLatLang(address)
                    .then(location => {
                        geocoder.geocode({
                            location
                        }, (latLngResults, latLngStatus) => {
                            if (latLngStatus === google.maps.GeocoderStatus.OK) {
                                resolve(extendedGeocoder.extractPostalCode(latLngResults))
                            } else {
                                reject()
                            }
                        })
                    })
                    .catch(reject)
            })
        }
    }
    return extendedGeocoder
}

ответ для Сиань, Шэньси, Китай

{
   "plus_code" : {
      "compound_code" : "2222+22 Meixian, Baoji, Shaanxi, China",
      "global_code" : "8P6C2222+22"
   },
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Zhouzhi",
               "short_name" : "Zhouzhi",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "Xi'an",
               "short_name" : "Xi'an",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Shaanxi",
               "short_name" : "Shaanxi",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "China",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Zhouzhi, Xi'an, Shaanxi, China",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 34.2351243,
                  "lng" : 108.5176627
               },
               "southwest" : {
                  "lat" : 33.6938767,
                  "lng" : 107.6637527
               }
            },
            "location" : {
               "lat" : 34.163669,
               "lng" : 108.222162
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 34.2351243,
                  "lng" : 108.5176627
               },
               "southwest" : {
                  "lat" : 33.6938767,
                  "lng" : 107.6637527
               }
            }
         },
         "place_id" : "ChIJ_-LaQlDQYzYRqO9YiA5nA7s",
         "types" : [ "political", "sublocality", "sublocality_level_1" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Xi'an",
               "short_name" : "Xi'an",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Shaanxi",
               "short_name" : "Shaanxi",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "China",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Xi'an, Shaanxi, China",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 34.7431036,
                  "lng" : 109.8224325
               },
               "southwest" : {
                  "lat" : 33.6938767,
                  "lng" : 107.6637527
               }
            },
            "location" : {
               "lat" : 34.341574,
               "lng" : 108.93977
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 34.7431036,
                  "lng" : 109.8224325
               },
               "southwest" : {
                  "lat" : 33.6938767,
                  "lng" : 107.6637527
               }
            }
         },
         "place_id" : "ChIJuResIul5YzYRLliUp_1m1IU",
         "types" : [ "locality", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Shaanxi",
               "short_name" : "Shaanxi",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "China",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Shaanxi, China",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 39.5870104,
                  "lng" : 111.2480539
               },
               "southwest" : {
                  "lat" : 31.7050596,
                  "lng" : 105.4919489
               }
            },
            "location" : {
               "lat" : 35.3939908,
               "lng" : 109.1880047
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 39.5870104,
                  "lng" : 111.2480539
               },
               "southwest" : {
                  "lat" : 31.7050596,
                  "lng" : 105.4919489
               }
            }
         },
         "place_id" : "ChIJn6frE2B6YzYRFldhy29uyUE",
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "China",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "China",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 53.5609739,
                  "lng" : 134.7754563
               },
               "southwest" : {
                  "lat" : 17.9996,
                  "lng" : 73.4994136
               }
            },
            "location" : {
               "lat" : 35.86166,
               "lng" : 104.195397
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 53.5609739,
                  "lng" : 134.7754563
               },
               "southwest" : {
                  "lat" : 17.9996,
                  "lng" : 73.4994136
               }
            }
         },
         "place_id" : "ChIJwULG5WSOUDERbzafNHyqHZU",
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

Любая помощь будет оценена.


  • Какой ответ вы получаете? 29.11.2018
  • Привет @AakashM, я добавил ответ для одного из мест. Как вы можете видеть, нет address_component, который содержит тип в качестве почтового индекса. Дайте мне знать, если вы сможете выяснить, как получить почтовый индекс для любого заданного места. 30.11.2018
  • Сделайте два звонка. Прочтите эту ветку. stackoverflow.com/questions/9695125/ 20.05.2019

Новые материалы

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

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]