Поиск расположения с помощью службы "Поиск" Azure Maps
Служба поиска — это набор API RESTful, предназначенных для поиска по адресам, местам и бизнес-спискам разработчиков по имени, категориям и другим географическим данным. Помимо традиционного геокодирования, поддерживается также обратное геокодирование для поиска адресов и пересекающих улиц по широте и долготе. Значения широты и долготы, возвращаемые поиском, можно использовать в качестве параметров в других службах Azure Maps, таких как Route и Weather.
В этой статье демонстрируются следующие возможности.
- Запрос координат широты и долготы для адреса (расположения адреса геокода) с помощью адреса поиска.
- Найдите адрес или точку интереса (POI) с помощью нечеткого поиска.
- Используйте обратный поиск адресов, чтобы перевести расположение координат на адрес улицы.
- Перевод расположения координат в понятный перекрестную улицу с помощью поискового адреса обратный кросс-стрит, чаще всего необходимо в приложениях отслеживания, которые получают GPS-канал от устройства или ресурса, и хотят знать, где находится координата.
Необходимые компоненты
- Учетная запись Azure Maps
- Ключ подписки
Внимание
В примерах URL-адресов в этой статье вам потребуется заменить {Your-Azure-Maps-Subscription-key}
ключ подписки Azure Maps.
В этой статье используется приложение бруно , но вы можете выбрать другую среду разработки API.
Запрос широты и долготы по адресу (геокодирование)
В этом разделе используется метод Get Search Address для преобразования адреса в координаты широты и долготы. Этот процесс называется еще геокодированием. Помимо возврата координат, ответ также возвращает подробные свойства адреса, такие как улица, почтовый индекс, муниципалитет и информация о стране или регионе.
Совет
Если у вас есть набор адресов для геокода, можно использовать пакет post search address для отправки пакета запросов в одном запросе.
Откройте приложение бруно, выберите NEW REQUEST , чтобы создать запрос. В окне NEW REQUEST задайте для типа HTTP. Введите имя запроса.
Выберите метод GET HTTP в раскрывающемся списке URL-адресов и введите следующий URL-адрес:
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
Выберите кнопку Создать.
Нажмите кнопку запуска.
Этот запрос выполняет поиск определенного адреса:
400 Broad St, Seattle, WA 98109
Затем выполните поиск по адресу с несколькими возможными расположениями.В разделе "Params" измените
query
ключ400 Broad, Seattle
на , а затем нажмите кнопку запуска.Затем попробуйте задать
query
для ключа значение400 Broa
, а затем нажмите кнопку запуска.Ответ включает результаты из нескольких стран или регионов. Чтобы получить результаты геобиа в соответствующую область для пользователей, всегда добавьте в запрос столько сведений о расположении.
Поиск нечетких соответствий
Нечеткий поиск поддерживает стандартные однострочные и бесплатные поиски. Использовать этот API рекомендуется, если вы не знаете тип входных данных, введенных пользователем в поисковом запросе. Входными данными запроса могут быть полный адрес, частичный адрес или маркер точки интереса (POI), например имя POI, ее категория или название торговой марки. Кроме того, чтобы повысить релевантность результатов поиска, ограничить результаты запроса с помощью расположения координат и радиуса или определить ограничивающий прямоугольник.
Совет
Большинство запросов поиска по умолчанию позволяют maxFuzzyLevel=1
повысить производительность и уменьшить необычные результаты. Настройте уровни нечеткости с помощью maxFuzzyLevel
или minFuzzyLevel
параметров. Дополнительные сведения и maxFuzzyLevel
полный список всех необязательных параметров см. в разделе URI нечетких параметров поиска.
Поиск адреса с помощью поиска нечетких соответствий
Пример в этом разделе используется Fuzzy Search
для поиска всей области пиццы, а затем выполняет поиск по определенной стране или региону. Наконец, в нем показано, как использовать расположение координат и радиус для области поиска по определенной области и ограничить количество возвращаемых результатов.
Внимание
Чтобы ограничить результаты нужной пользователю географической областью, всегда указывайте как можно больше сведений о расположении. Дополнительные сведения см. в рекомендациях по поиску.
Откройте приложение бруно, выберите NEW REQUEST , чтобы создать запрос. В окне NEW REQUEST задайте для типа HTTP. Введите имя запроса.
Выберите метод GET HTTP в раскрывающемся списке URL-адресов и введите следующий URL-адрес:
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.Нажмите кнопку запуска, а затем просмотрите текст ответа.
Неоднозначная строка запроса для "пиццы" вернула 10 точек интереса (POI) приводит как к категории "пицца" и "ресторан". Каждый результат содержит улицу и номер дома, значения широты и долготы, окно просмотра и точки входа в интересующее место. Результаты теперь отличаются для этого запроса и не привязаны к любому ссылочного расположения.
На следующем шаге вы будете использовать
countrySet
параметр, чтобы указать только страны или регионы, для которых требуется охват приложения. Полный список поддерживаемых стран и регионов см. в разделе "Покрытие геокодирования Azure Maps".По умолчанию поиск ведется по всему миру, из-за чего ответ может содержать ненужные результаты. Затем найдите пиццу только в США. Добавьте ключ
countrySet
в раздел Params (Параметры) и задайте для него значениеUS
.countrySet
Установка ключа дляUS
привязки результатов к США.Теперь результаты ограничены кодом страны и запрос возвращает адреса пиццерий в США.
Чтобы получить еще более целевой поиск, можно выполнить поиск по области пары координат lat/lon. В следующем примере используются координаты lat/lon в Сиэтле Space Needle. Так как мы хотим возвращать результаты только в радиусе 400 метров, мы добавим
radius
этот параметр. Кроме того, мы добавимlimit
параметр, чтобы ограничить результаты пятью ближайшими местами пиццы.В разделе Params (Параметры) добавьте следующие пары "ключ-значение":
Ключ Значение шир. 47,620525 lon –122,349274 радиус 400 limit 5 Нажмите Выполнить. Ответ будет содержать сведения о пиццериях в окрестности башни Спейс-Нидл в Сиэтле.
Поиск улицы и номера дома с использованием обратного поиска адреса
Получение обратного адреса поиска преобразует координаты в удобочитаемые уличные адреса. Этот API часто используется в приложениях, которые получают веб-каналы GPS и которым требуется определять адреса, располагающиеся по данным координатам.
Внимание
Чтобы получить результаты геобиа в соответствующую область для пользователей, всегда добавьте максимальное количество сведений о расположении. Дополнительные сведения см. в рекомендациях по поиску.
Совет
Если у вас есть набор расположений координат для обратного геокода, можно использовать обратный пакет для обратного поиска по адресу для отправки пакета запросов в одном запросе.
В этом примере показано, как выполнять обратный поиск с помощью нескольких доступных необязательных параметров. Полный список необязательных параметров см. в разделе "Параметры URI" документации API обратного поиска.
Откройте приложение бруно, выберите NEW REQUEST , чтобы создать запрос. В окне NEW REQUEST задайте для типа HTTP. Введите имя запроса.
Выберите метод GET HTTP в раскрывающемся списке URL-адресов и введите следующий 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
Нажмите кнопку запуска и просмотрите текст ответа. Должен быть возвращен всего один результат. Ответ включает основные сведения об адресе Safeco Field.
Затем добавьте следующие пары "ключ-значение" в раздел Params :
Ключ Значение Возвраты number 1 Ответ может включать сторону улицы (слева или справа), а также положение смещения для числа. returnSpeedLimit true Возвращает ограничение скорости для данного адреса. returnRoadUse true Возвращает типы дорог по способу использования для данного адреса. Все возможные типы дорог по способу использования см. в описании параметра roadUse. returnMatchType true Возвращает тип совпадения. Все возможные значения см. в разделе "Результаты поиска обратного адреса". Нажмите кнопку запуска и просмотрите текст ответа.
Затем добавьте ключ и задайте для нее
entityType
значениеMunicipality
. КлючentityType
переопределяетreturnMatchType
ключ на предыдущем шаге.returnSpeedLimit
аreturnRoadUse
также необходимо удалить, так как вы запрашиваете информацию о муниципалитете. Все возможные типы сущностей см. в описании объекта EntityType.Нажмите кнопку запуска. Сравните результаты с теми, которые были возвращены на шаге 5. Так как запрошенный тип сущности теперь
municipality
является, ответ не содержит сведения об адресе улицы. Кроме того, по возвращаемому значениюgeometryId
можно запросить многоугольный контур интересующей области с помощью API поиска многоугольника (GET) Azure Maps.
Совет
Дополнительные сведения об этих параметрах, а также других параметрах см. в разделе "Параметры обратного поиска".
Обратный поиск пересекающей улицы
В этом примере показано, как искать перекрестную улицу на основе координат адреса.
Откройте приложение бруно, выберите NEW REQUEST , чтобы создать запрос. В окне NEW REQUEST задайте для типа HTTP. Введите имя запроса.
Выберите метод GET HTTP в раскрывающемся списке URL-адресов и введите следующий 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
Нажмите кнопку запуска и просмотрите текст ответа. Обратите внимание, что ответ содержит
crossStreet
значениеSouth Atlantic Street
.