Возьмите строку адреса вроде «12B Flat 3» и спросите, что означает каждая её часть, и вы обнаружите, что ответ зависит от местных правил, а не от самой строки. Является ли «12B» номером здания с буквенным суффиксом или это этаж и помещение вместе? Является ли «Flat 3» отдельным уточнением для конкретной квартиры в здании 12B или дублирует его? Человек, знакомый с местными правилами, разберётся в этом мгновенно. Программе, которая разбирает произвольный текст из любой точки мира, приходится гораздо сложнее, потому что одни и те же символы несут разный смысл в зависимости от того, откуда адрес.
Обозначения помещений и квартир сильно различаются между странами и даже внутри них. Сокращения вроде «Apt», «Unit», «Ste», «Fl» или просто число после запятой могут обозначать часть здания, а разные страны и даже разные регионы одной страны предпочитают разные правила. Парсер, настроенный на привычки одного региона, будет регулярно неверно читать адреса другого, либо полностью теряя сведения о помещении, либо привязывая их не к той части адреса.
Абонентские ящики добавляют отдельную сложность, поскольку они обозначают почтовый адрес назначения, вообще не соответствующий напрямую какому-либо физическому зданию. У абонентского ящика есть реальное осмысленное местоположение в том смысле, что он относится к конкретному почтовому отделению, но геокодирование его в координаты этого отделения отличается от геокодирования адреса улицы. Если обрабатывать их одинаково, получится правдоподобный на вид, но функционально бессмысленный результат, если вашей задаче на самом деле нужна физическая точка доставки.
Поля точности и достоверности существуют отчасти именно для того, чтобы показывать такую неоднозначность, а не скрывать её. Адрес с нераспознанным или неоднозначным обозначением помещения всё равно может быть успешно геокодирован на уровне здания, и precision будет отражать, что совпадение найдено на уровне здания, а не подтверждать, что конкретное помещение разобрано правильно. Если читать только координаты и игнорировать точность, может возникнуть ложная уверенность в том, что найдена конкретная квартира, хотя на самом деле найдено только здание.
Если ваше приложение зависит от точности на уровне помещения, например при доставке в конкретную квартиру в большом жилом комплексе, стоит проверять, что поле помещения или квартиры действительно было разобрано и сохранено отдельно, а не молча растворилось в совпадении, которое определило только здание. Тестирование ввода адресов на реальных примерах с обозначениями помещений, абонентскими ящиками и составными идентификаторами зданий из нескольких разных стран, а не только в формате вашего домашнего рынка, выявит такой пробел задолго до того, как на него наткнётся пользователь. Наш эндпоинт прямого геокодирования возвращает поля type и precision именно для того, чтобы вы могли отличить полное совпадение от приближения на уровне здания.
Адрес в хорошо картографированном центре города почти ничего не говорит о том, как ваша система справится с сельским маршрутом, спорной границей или запросом вблизи полюсов. Тестируйте сложные случаи намеренно.
Не каждый набор данных с общедоступными на вид сведениями о местоположении можно законно использовать в платном продукте. Реальную границу часто задают условия лицензии, а не техническая доступность.