iOS - место поиска Apple Maps MKMapKit не работает должным образом

Поиск в Apple Maps MKMapKit не работает должным образом с помощью MKLocalSearch.

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

В настоящее время результаты запроса MKLocalSearch иногда предоставляют код ошибки "loadingThrottled", хотя мы отменяем предыдущий запрос с введенным новым поисковым символом.

Также MKLocalSearch предоставляет только 10 результатов для искомой строки.

Можно ли как-то улучшить эту функцию поиска местоположения и улучшить автозаполнение?

Согласно документам Apple:

Для каждого приложения или идентификатора разработчика нет ограничений по количеству запросов, поэтому у хорошо написанных приложений, которые работают правильно, проблем не должно быть. Однако регулирование может происходить в плохо написанном приложении, которое создает чрезвычайно большое количество запросов. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/EnablingSearch/EnablingSearch.html

1 ответ

Вы должны использовать MKLocalSearchCompleter для получения предложений автозаполнения. Это обеспечивает наиболее релевантные результаты по сравнению с MKLocalSearch.

Объект MKLocalSearchCompleter принимает частичную строку поиска и генерирует список возможных дополнений. Вы используете объект для завершения поиска, чтобы получить предложения по автозаполнению для собственных элементов управления поиском на основе карты.

Преимущество:

  • Предоставьте наиболее релевантные результаты по сравнению с MKLocalSearch.
  • Фильтр местоположения (MKSearchCompletionFilterType) доступен.
  • Меньше шансов получить ошибку "loadingThrottled".
  • Приблизительно дает 15 результатов.(Исходя из моего опыта до сих пор.)

Ограничение:

  • MKLocalSearchComplete не предоставляет местоположение в ответе, только предоставляет имя местоположения и адрес.(Если вы хотите указать местоположение, чем создавать объект MKLocalSearch, вы получите более подробную информацию о местоположении.)

Когда пользователь вводит текст, вы вводите текущую текстовую строку в объект завершающего поиска, который доставляет возможные завершения строки, которые соответствуют местоположениям или интересующим точкам. Затем вы используете полностью сформированные объекты завершения поиска, чтобы создать объект MKLocalSearch и получить более подробную информацию о географическом местоположении.

Ссылка: Apple API Ссылка: MKLocalSearchCompleter

Другие вопросы по тегам