Поиск местоположения: конкретный адрес и местный бизнес

Я создаю приложение для iOS. В настоящее время у меня есть панель поиска, которая может использоваться для поиска местного бизнеса (например, пиццы, бензоколонки, банка). Текст строки поиска добавляется как параметр URL-адреса и отправляется в Yahoo Local API. Я хотел бы использовать одну и ту же панель поиска для поиска определенных адресов, но это не функция API. Я думаю, что должен:

A) Создайте функцию, которая может различать широкий бизнес-поиск и конкретный поиск местоположения. Отправлять бизнес-запросы в API и отправлять запросы адресов в CLGeocoder.

B) Найдите более универсальный API.

C) Сделайте что-то еще, что я еще не рассмотрел.

Я мог бы добавить отдельное поле поиска и использовать его для поиска адресов, но мне интересно, можно ли это сделать из той же панели поиска. Если бы кто-нибудь мог предложить какие-либо советы или указать мне в правильном направлении, я был бы признателен. Благодарю.

2 Solutions collect form web for “Поиск местоположения: конкретный адрес и местный бизнес”

Вероятно, вам будет сложно выполнять A, поскольку адреса и POI – это довольно строки свободной формы, особенно когда они представляют собой созданные человеком строки. Я бы предпочел добавить какой-то переключатель, который пользователь может переключить, чтобы искать предприятия или адреса.

Для B вы можете взглянуть на карты Google api , если они соответствуют вашим потребностям. Это кажется довольно универсальным в отношении входных параметров.

+1 за интересный вопрос. Это определенно вопрос программирования, но почти UX-вопрос.

Я думаю, вы можете сделать все это в одном поле. Я работаю на SmartyStreets, где мы анализируем и обрабатываем адреса. Вот несколько вещей, которые я извлек из опыта, связанные с вашим вопросом:

  • Не используйте регулярные выражения для анализа или определения адресов. Это слишком сложно. Адреса бывают разных форм, как сказал Матей. «Строки Freeform» могут быть любыми. Искушение – использовать регулярное выражение, но есть более разумный способ.
  • Очень мало API адресов / адресов фактически обеспечивает ценность и результаты, которые вы ищете, по крайней мере, согласно их TOS. Например, Google, Yahoo !, и другие требуют отображения карты и не позволяют автоматизировать запросы (например, ни один пользователь не активно инициирует запрос).
  • Большинство API-интерфейсов выполняют только адресную аппроксимацию , а не проверку адреса. Таким образом, результаты, которые вы получаете, в лучшем случае – это предположение. Google хорош в угадывании, но результаты могут вернуться, что выглядит законным, что на самом деле нет. Я видел это много, и это укусило меня. Геолокационные / геокодирующие API имеют свое место, но у них также есть свои ограничения.

Итак, пример: пользователь вводит POI или адрес в это текстовое поле. Вы не знаете, какой из них он есть, или если это так. И если вы действительно знаете, существует ли POI или адрес? Я не знаю о (недорогом) API, который выполняет оба сразу – есть корпоративные, которые я видел, но … возможно, слишком много ударов для слишком большого количества долларов. Вот более простой подход, который я бы попробовал.

  1. Найдите службу CASS-Certified для проверки адреса. Интерфейс LiveAddress от SmartyStreets ( другая демонстрация на домашней странице ) – это один из таких сервисов (недорогой, даже бесплатный для использования в небольших объемах). Хотя API не выполняет прямой анализ однострочных адресов, очень просто использовать этот алгоритм (с рабочим примером здесь ) – это еще проще в Objective C, потому что вам не нужно возиться с JSONP, как в Javascript ,

  2. Если LiveAddress или эквивалентный сервис (я призываю вас провести некоторое исследование и дайте мне знать, если у вас появятся дополнительные вопросы – я буду рад помочь), возвращает любые результаты, строка была адресом. Некоторые CASS-сертифицированные сервисы, которые будут предупреждены, также возвратят поддельные адреса или догадки, и трудно или невозможно отличить их. LiveAddress вернет только действительные адреса. Поэтому, если LiveAddress возвращает результат (обычно первый, используя вышеприведенный алгоритм), строка определенно является адресом или POI, за которой следует адрес. (И да, LiveAddress будет геокодировать каждый адрес.)

  3. Если результаты не были возвращены, это было имя POI / business. Если ваше приложение придерживается Google или Yahoo TOS, запросите их API, потому что они хорошо угадывают и находят более общие матчи на таких вещах.

Еще один вариант – сначала запросить API Карт, а затем вернуть адрес (если есть), отправить его через LiveAddress, чтобы убедиться в его наличии и узнать больше об этом.

Надеюсь, что вы укажете в правильном направлении (каламбур не предназначен). Сообщите мне, хотите ли вы разъяснить что-либо или какие-либо другие вопросы, связанные с адресом.

  • Результат анализа URL из API запросов Facebook правильно
  • Mute Voice Directions in Here Карты iOS SDK
  • Как скрыть ключи API в проектах GitHub для iOS (SWIFT)?
  • Требуется ли API Yahoo Weather API для пользователей API?
  • Рекомендации по API Key и Secret в комплекте с приложениями
  • API поиска логотипа?
  • как получить данные календаря для определенной даты в API календаря Google v3?
  • Получить ключевые слова для приложения с помощью API поиска iTunes
  • Swift - может печатать только адрес памяти объекта
  • Аутентификация с помощью REST API с клиентом iOS с использованием SSO в виде единого входа
  • Instagram MIN_TIMESTAMP не возвращает все изображения, которые он должен
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.