Поиск расположения с помощью службы "Поиск" Azure Maps

Служба поиска — это набор API RESTful, предназначенных для поиска по адресам, местам и бизнес-спискам разработчиков по имени, категориям и другим географическим данным. Помимо традиционного геокодирования, поддерживается также обратное геокодирование для поиска адресов и пересекающих улиц по широте и долготе. Значения широты и долготы, возвращаемые поиском, можно использовать в качестве параметров в других службах Azure Карты, таких как Route и Weather.

В этой статье демонстрируются следующие возможности.

  • Запрос координат широты и долготы для адреса (расположения адреса геокода) с помощью адреса поиска.
  • Найдите адрес или точку интереса (POI) с помощью нечеткого поиска.
  • Используйте обратный поиск адресов, чтобы перевести расположение координат на адрес улицы.
  • Перевод расположения координат в понятный перекрестную улицу с помощью поискового адреса обратный кросс-стрит, чаще всего необходимо в приложениях отслеживания, которые получают GPS-канал от устройства или ресурса, и хотят знать, где находится координата.

Необходимые компоненты

В этом руководстве используется приложение Postman, но вы можете выбрать другую среду разработки API.

Запрос широты и долготы по адресу (геокодирование)

В этом разделе используется метод Get Search Address для преобразования адреса в координаты широты и долготы. Этот процесс называется еще геокодированием. Помимо возврата координат, ответ также возвращает подробные свойства адреса, такие как улица, почтовый индекс, муниципалитет и информация о стране или регионе.

Совет

Если у вас есть набор адресов для геокода, можно использовать пакет post search address для отправки пакета запросов в одном запросе.

  1. В приложении Postman нажмите Создать, чтобы создать запрос. В окне Create New (Создание) выберите HTTP Request (HTTP-запрос). Введите Имя запроса для запроса.

  2. Выберите метод HTTP GET на вкладке конструктора и введите следующий URL-адрес. В этом запросе мы выполняем поиск по известному адресу: 400 Braod St, Seattle, WA 98109. Для этого запроса и других запросов, упоминание, указанных в этой статье, замените {Your-Azure-Maps-Subscription-key} ключ подписки azure Карты.

    https://atlas.microsoft.com/search/address/json?&subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&language=en-US&query=400 Broad St, Seattle, WA 98109
    
  3. Нажмите синюю кнопку "Отправить ". Текст ответа содержит данные для одного расположения.

  4. Затем выполните поиск по адресу с несколькими возможными расположениями. В разделе Params (Параметры) поменяйте значение ключа query на 400 Broad, Seattle. Нажмите синюю кнопку "Отправить ".

    Search for address

  5. Теперь попробуйте установить для ключа query значение 400 Broa.

  6. Нажмите кнопку Send (Отправить). Ответ включает результаты из нескольких стран или регионов. Чтобы ограничить результаты нужной пользователю географической областью, всегда указывайте в запросе как можно больше сведений о расположении.

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

Совет

Большинство запросов поиска по умолчанию позволяют maxFuzzyLevel=1 повысить производительность и уменьшить необычные результаты. Настройте уровни нечеткости с помощью maxFuzzyLevel или minFuzzyLevel параметров. Дополнительные сведения и maxFuzzyLevel полный список всех необязательных параметров см. в разделе URI нечетких параметров поиска.

В примере в этом разделе используется Fuzzy Search поиск по всему миру пиццы, а затем выполняется поиск по область определенной страны или региона. Наконец, в нем показано, как использовать расположение координат и радиус для область поиска по определенной области и ограничить количество возвращаемых результатов.

Важно!

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

  1. В приложении Postman нажмите Создать, чтобы создать запрос. В окне Create New (Создание) выберите HTTP Request (HTTP-запрос). Введите Имя запроса для запроса.

  2. Выберите метод HTTP GET на вкладке конструктора и введите следующий URL-адрес. Для этого запроса и других запросов, упоминание, указанных в этой статье, замените {Your-Azure-Maps-Subscription-key} ключ подписки azure Карты.

    https://atlas.microsoft.com/search/fuzzy/json?&api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=pizza
    

    Примечание.

    Атрибут json в URL-адресе пути определяет формат ответа. В этой статье для простоты использования и удобочитаемости используется JSON. Другие поддерживаемые форматы ответа см. в определении параметра format в документации по параметрам URI.

  3. Выберите " Отправить " и просмотрите текст ответа.

    По неоднозначной строке запроса "pizza" возвращено было 10 точек интереса (POI) в категориях "пицца" и "ресторан". Каждый результат содержит улицу и номер дома, значения широты и долготы, окно просмотра и точки входа в интересующее место. Результаты теперь отличаются для этого запроса и не привязаны к любому ссылочного расположения.

    На следующем шаге вы будете использовать countrySet параметр, чтобы указать только страны или регионы, для которых требуется охват приложения. Полный список поддерживаемых стран и регионов см. в статье "Покрытие для геокодирования в службе ''Карты Azure''".

  4. По умолчанию поиск ведется по всему миру, из-за чего ответ может содержать ненужные результаты. Затем найдите пиццу только в США. Добавьте ключ countrySet в раздел Params (Параметры) и задайте для него значение US. countrySet Установка ключа для US привязки результатов к США.

    Search for pizza in the United States

    Теперь результаты ограничены кодом страны и запрос возвращает адреса пиццерий в США.

  5. Чтобы получить еще более целевой поиск, можно выполнить поиск по область пары координат lat/lon. В следующем примере используются координаты lat/lon в Сиэтле Space Needle. Так как мы хотим возвращать результаты только в радиусе 400 метров, мы добавим radius этот параметр. Кроме того, мы добавим limit параметр, чтобы ограничить результаты пятью ближайшими местами пиццы.

    В разделе Params (Параметры) добавьте следующие пары "ключ-значение":

    Ключ Значение
    шир. 47,620525
    lon –122,349274
    Радиус 400
    limit 5
  6. Выберите Отправить. Ответ будет содержать сведения о пиццериях в окрестности башни Спейс-Нидл в Сиэтле.

Получение обратного адреса поиска преобразует координаты в удобочитаемые уличные адреса. Этот API часто используется в приложениях, которые получают веб-каналы GPS и которым требуется определять адреса, располагающиеся по данным координатам.

Важно!

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

Совет

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

В этом примере показано, как выполнять обратный поиск с помощью нескольких доступных необязательных параметров. Полный список необязательных параметров см. в разделе "Параметры URI" документации API обратного поиска.

  1. В приложении Postman нажмите Создать, чтобы создать запрос. В окне Create New (Создание) выберите HTTP Request (HTTP-запрос). Введите Имя запроса для запроса.

  2. Выберите метод HTTP GET на вкладке конструктора и введите следующий URL-адрес. Для этого запроса и других запросов, упоминание, указанных в этой статье, замените {Your-Azure-Maps-Subscription-key} ключ подписки azure Карты. Запрос должен выглядеть, как в этом URL-адресе:

    https://atlas.microsoft.com/search/address/reverse/json?api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=47.591180,-122.332700&number=1
    
  3. Выберите "Отправить" и просмотрите текст ответа. Должен быть возвращен всего один результат. Ответ включает основные сведения об адресе Safeco Field.

  4. Затем добавьте следующие пары "ключ-значение" в раздел Params :

    Ключ Значение Возвраты
    number 1 Ответ может включать в себя сведения о стороне улицы (левая или правая), а также о позиции смещения для этого номера дома.
    returnSpeedLimit true Возвращает ограничение скорости для данного адреса.
    returnRoadUse true Возвращает типы дорог по способу использования для данного адреса. Все возможные типы дорог по способу использования см. в описании параметра roadUse.
    returnMatchType true Возвращает тип совпадения. Все возможные значения см. в разделе "Результаты поиска обратного адреса".

    Search reverse.

  5. Выберите "Отправить" и просмотрите текст ответа.

  6. Затем мы добавим ключ и задайте для нее entityType значение Municipality. Ключ entityType переопределяет returnMatchType ключ на предыдущем шаге. returnSpeedLimit а returnRoadUse также необходимо удалить, так как вы запрашиваете информацию о муниципалитете. Все возможные типы сущностей см. в описании объекта EntityType.

    Search reverse entityType.

  7. Выберите Отправить. Сравните результаты с теми, которые были возвращены на шаге 5. Так как запрошенный тип сущности теперь municipalityявляется, ответ не содержит сведения об адресе улицы. Кроме того, по возвращаемому значению geometryId можно запросить многоугольный контур интересующей области с помощью API поиска многоугольника (GET) Azure Maps.

Совет

Дополнительные сведения об этих параметрах, а также других параметрах см. в разделе "Параметры обратного поиска".

В этом примере показано, как искать перекрестную улицу на основе координат адреса.

  1. В приложении Postman нажмите Создать, чтобы создать запрос. В окне Create New (Создание) выберите HTTP Request (HTTP-запрос). Введите Имя запроса для запроса.

  2. Выберите метод HTTP GET на вкладке конструктора и введите следующий URL-адрес. Для этого запроса и других запросов, упоминание, указанных в этой статье, замените {Your-Azure-Maps-Subscription-key} ключ подписки azure Карты. Запрос должен выглядеть, как в этом URL-адресе:

    https://atlas.microsoft.com/search/address/reverse/crossstreet/json?&api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=47.591180,-122.332700
    

    Search cross street.

  3. Выберите "Отправить" и просмотрите текст ответа. Обратите внимание, что ответ содержит crossStreet значение South Atlantic Street.

Следующие шаги