Как получить действительный адрес через @ google / maps? - PullRequest
0 голосов
/ 25 января 2019

В микросервисе Node.js я использую:

"@google/maps": "^0.5.5"

googleMapsClient.geocode({address: '160 Market St, Paterson, NJ 07505'})
    .asPromise()
    .then((response) => {
        console.log("result: " + JSON.stringify(response.json));
    })
    .catch((err) => {
        console.log("error: " + err);
    });

в ответ я получаю: "location_type":"ROOFTOP" и "types":["street_address"], что означает, что адрес действителен

Если я пытаюсьпроверить тот же адрес, но с недопустимым состоянием, например, «НЕТ», он по-прежнему возвращает "location_type":"ROOFTOP" и "types":["street_address"].Предположим, потому что Google API форматирует его, что можно увидеть в ответе:

"formatted_address":"160 Market St, Paterson, NJ 07505, USA"

Иногда Google API возвращает "location_type":"ROOFTOP" и "types":["premise"]

Конечно, я могу отфильтровать результаты по location_typeи types но я действительно хочу считать адрес действительным, если его можно найти в @types/googlemaps AutoComplete.Вот что я использую в пользовательском интерфейсе (Angular):

"@types/googlemaps": "3.30.16"
const autocomplete = new google.maps.places.Autocomplete(e.target, {
    types: ['address']
});

var place = google.maps.places.PlaceResult = autocomplete.getPlace();

Даже если он просто определен как types: ['address'] в AutoComplete, его можно найти как "types":["street_address"] или "types":["premise"] в "@google/maps".. Так как make Node.js возвращает только адреса, которые можно найти в автозаполнении?

1 Ответ

0 голосов
/ 30 января 2019

Поскольку Places API также поддерживается библиотекой @google/maps, это может быть выполнено следующим образом:

//1. query predictions
googleMapsClient.placesQueryAutoComplete(
  {
    input: "160 Market St, Paterson, NJ 07505"
  },
  function(err, response) {
    if (!err) {
      if (response.json.predictions.length === 0) {
        console.log("Place not found");
      } else {
        var prediction = response.json.predictions[0]; //select first prediction
        //2. query place by prediction
        googleMapsClient.place(
          {
            placeid: prediction.place_id
          },
          function(err, response) {
            if (!err) {
              console.log(response.json.result); //prinat place
            }
          }
        );
      }
    }
  }
);

Пояснение:

  • placesQueryAutoComplete сначала используется функция, которая возвращает массив предсказаний запроса на основе запроса
  • place функция возвращает сведения о месте, предоставляя параметр placeId, извлеченный из предыдущего ответа
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...