Подтвердить что ты не робот

Правильный формат адреса, чтобы получить наиболее точные результаты от Google GeoCoding API

Существует ли какой-либо стандартный формат для подачи адресной строки в API Google GeoCoding для получения наиболее точных результатов на карте.

Например. следующий запрос не дает правильного результата.

http://maps.googleapis.com/maps/api/geocode/xml?address=bloom,Bloomfield,CT,06002,USA&sensor=false

Спасибо

Мандип

4b9b3361

Ответ 1

Я считаю, что предлагаемый формат:

House Number, Street Direction, Street Name, Street Suffix, City, State, Zip, Country

Результаты становятся менее конкретными, чем меньше информации, которую вы можете предоставить, очевидно.

В вашем образце геокодер ищет улицу с названием "цветение", из которой аналогичны совпадения в ОН вместо CT. Удаление "цветения" из запроса, а затем поиск возвращает Bloomfield, CT.

Ответ 2

Я нашел ответ неполным, и у него не было источника.

Посмотрите здесь: https://developers.google.com/places/documentation/autocomplete#place_autocomplete_responses

API автозаполнения карт из google возвращает гораздо более простой формат: "Улица, город, страна" Теперь вы можете использовать такую ​​строку, чтобы искать адрес, и это должно привести к одному точному результату. Кроме того, если вы используете API автозаполнения, вы также получите уникальный идентификатор, который может использоваться для дальнейших подробных запросов.

Формат адресной почты сильно зависит от того, где вы находитесь. В США "Номер дома, направление улицы, название улицы, уличный суффикс" может иметь смысл, в большинстве стран Европы это не приведет к успешному запросу.

Адреса в большинстве стран ЕС различны (часто "Суффикс номера улицы" ), например "Kumpelstraat 25A", "Psolevcu 331/26b" ), и я думаю, мы были бы удивлены, если посмотрим на некоторые восточные страны.

Итак, если вы привяжете свой код к одной области (США, большая часть ЕС), вы можете быть хорошо жестко кодировать формат.
Если вы хотите иметь более гибкую систему, вам нужно либо узнать, как создать форпер для вашей целевой аудитории, либо запросить один из API-интерфейсов googles, чтобы автоматически получить правильную строку. Тот, с которым я связан, очень хорош, но требует ключа API с бесплатным лимитом запросов в день.

Ответ 3

Определение поиска адресов Google:

адрес. Адрес, который вы хотите геокодировать, в формате, используемом национальной почтовой службой соответствующей страны. Следует избегать дополнительных элементов адреса, таких как имена компаний и номера единиц, номеров или номеров.

https://developers.google.com/maps/documentation/geocoding/#geocoding

Как мне отформатировать запросы геокодера, чтобы максимально увеличить количество успешных запросов?

Геокодер предназначен для сопоставления адресов улиц с географическими координатами. Поэтому мы рекомендуем вам отформатировать запросы геокодера в соответствии со следующими рекомендациями, чтобы максимизировать вероятность успешного запроса:

  • Укажите адреса в соответствии с форматом, используемым национальной почтовой службой соответствующей страны.
  • Не указывайте дополнительные элементы адреса, такие как названия компаний, номера единиц, номера этажей или номера номеров, которые не включены в адрес, как определено почтовой службой соответствующей страны.
  • Используйте номер улицы в помещении, где это возможно, в зависимости от названия здания.
  • Используйте адресацию номера улицы, чтобы указать, где возможно, перекрестные улицы.
  • Не предоставляйте "подсказки", например, близлежащие достопримечательности.

https://developers.google.com/maps/faq#geocoder_queryformat

Ответ 4

Я наткнулся на этот вопрос и нашел решение, которое сработало для меня:

Я думаю, что ответ можно найти, используя фильтрацию компонентов, посмотрите: https://developers.google.com/maps/documentation/geocoding/#ComponentFiltering

Пример в Javascript:

var request = require('request');

var url = "https://maps.googleapis.com/maps/api/geocode/json?" +
    "address=Herengracht 180" +
    "&components=postal_code:1016 BR|country:NL" +
    "&sensor=false";

request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
  else {
    console.log('error', error);
  }
});