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

Я создаю приложение для 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, чтобы убедиться в его наличии и узнать больше об этом.

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

  • Доступ к частной iOS Apis, как?
  • Как получить JSON из API календаря Google в swift?
  • Где iOS 6 Siri API
  • SalesForce на входе iOS без использования SalesForce Webview?
  • Как использовать Yelp API в Swift?
  • iOS iPod API - получить фактический файл песни
  • Создайте приложение для чтения Wordpress для устройства iOS. I: покажите notificaiton / Чтение содержимого только в том случае, если обновлен контент / канал сайта.
  • Mute Voice Directions in Here Карты iOS SDK
  • Пользовательский логин Instagram API iOS
  • Невозможно вставить момент - API Google Plus
  • Хотите передать представление приложения на Apple TV с помощью AirPlay Apl в ios sdk?
  • Interesting Posts

    iOS: автоматическое восстановление соединения Bluetooth BLE в диапазоне

    Сортировка массива объектов в алфавитном порядке на основе атрибута строки

    Кнопка «Обнаружение» при нажатии нескольких видов просмотра

    iOS: представление новых представлений, интерфейс которых загружается из xib-файла и содержит контроллер навигации

    Какие условия могут препятствовать тому, чтобы layoutSubviews вызывались после setNeedsLayout?

    Обрезать автоматически с помощью камеры, такой как instagram

    iOS Читать Json из Интернета и отображать на tableView

    Воспроизведение необработанного несжатого звука с помощью AudioQueue, без звука

    Примеры Socket.io с Swift и Node.js на бэкэнд

    iPhone UITableView. Как включить единый буквенный список, такой как Music App?

    вертикальное выравнивание UINavigationItems

    не хотите, чтобы модальный вид поднялся на клавиатуре

    iOS Не типичная проблема таймера отслеживания местоположения фона

    Segue from editActionsForRowAtIndexPath

    Как создать UIButton с градиентом и подсветкой?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.