Pesquisar um local usando os serviços de Pesquisa do Azure Mapas
O serviço Pesquisa é um conjunto de APIs RESTful projetadas para ajudar os desenvolvedores a pesquisar endereços, locais e listagens de empresas por nome, categoria e outras informações geográficas. Além de oferecer suporte à geocodificação tradicional, os serviços também podem inverter endereços de geocodificação e fazer o cruzamento de ruas com base em latitudes e longitudes. Os valores de latitude e longitude retornados pela pesquisa podem ser usados como parâmetros em outros serviços do Azure Mapas, como Rota e Clima.
Este artigo demonstra como:
- Solicitar coordenadas de latitude e longitude de um endereço (local de endereço geocodificado) usando a Pesquisa de Endereço.
- Procurar um endereço ou POI (ponto de interesse) usando a API de Pesquisa Difusa.
- Usar a Pesquisa Inversa de Endereço para converter o local da coordenada em um endereço.
- Traduza a localização das coordenadas em um cruzamento compreensível por humanos usando a Reversão de Endereço de Pesquisa Entre Ruas, mais frequentemente necessário no rastreamento de aplicativos que recebem um feed de GPS de um dispositivo ou ativo, e desejam saber onde a coordenada está localizada.
Pré-requisitos
Importante
Nos exemplos de URL neste artigo, você precisará substituir {Your-Azure-Maps-Subscription-key}
pela chave de assinatura do Azure Mapas.
Este artigo usa o aplicativo bruno, mas você pode escolher um ambiente de desenvolvimento de API diferente.
Solicitar latitude e longitude para um endereço (geocodificação)
O exemplo nesta seção usa Obter endereço de pesquisa para converter um endereço em coordenadas de latitude e longitude. Esse processo é chamado geocodificação. Além de retornar as coordenadas, a resposta também retorna propriedades de endereço detalhadas, como informações de rua, código postal, município e país/região.
Dica
Se você tiver um conjunto de endereços para geocodificar, use Postar Lote de Endereços de Pesquisa para enviar um lote de consultas em uma só solicitação.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NOVA SOLICITAÇÃO, defina Tipo como HTTP. Digite um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa de URL e, em seguida, insira a seguinte 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
Selecione o botão Criar.
Selecione o botão executar.
Essa solicitação procura um endereço específico:
400 Broad St, Seattle, WA 98109
. Em seguida, pesquise um endereço que tenha mais de um local possível.Na seção Params, altere a chave
query
para400 Broad, Seattle
e, em seguida, selecione o botão executar.Em seguida, tente definir a chave
query
para400 Broa
e, em seguida, selecione o botão executar.A resposta inclui os resultados de vários países/regiões. Para resultados geopolares para a área relevante para seus usuários, sempre adicione à solicitação o máximo possível de detalhes de local.
Pesquisa Difusa
A Pesquisa Difusa dá suporte às pesquisas padrão de linha única e com forma livre. É recomendável o uso da API de pesquisa difusa do Azure Mapas quando não se sabe o tipo de entrada de usuário para uma solicitação de pesquisa. A entrada da consulta pode ser um endereço completo ou parcial. Também pode ser um token de POI (ponto de interesse), como um nome de POI, uma categoria de POI ou nome de marca. Além disso, para melhorar a relevância dos resultados da pesquisa, restrinja os resultados da consulta usando uma localização e raio de coordenadas ou definindo uma caixa delimitadora.
Dica
A maioria das consultas de Pesquisa tem como padrão maxFuzzyLevel=1
para melhorar o desempenho e reduzir resultados incomuns. Ajuste os níveis de imprecisão usando os parâmetros maxFuzzyLevel
ou minFuzzyLevel
. Para obter mais informações sobre maxFuzzyLevel
e uma lista completa de todos os parâmetros opcionais, confira Parâmetros de URI de Pesquisa Difusa.
Procurar um endereço usando a Pesquisa Difusa
O exemplo nesta seção usa Fuzzy Search
para pesquisar o mundo inteiro por pizza e, em seguida, pesquisa no escopo de um país/região específico. Finalmente, ele demonstra como usar uma localização de coordenadas e um raio para definir o escopo de uma pesquisa em uma área específica e limitar o número de resultados retornados.
Importante
Para resultados geopolares para a área relevante para seus usuários, sempre adicione o máximo possível de detalhes de local. Para obter mais informações, confira Melhores práticas para Pesquisa.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NOVA SOLICITAÇÃO, defina Tipo como HTTP. Digite um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa de URL e, em seguida, insira a seguinte URL:
https://atlas.microsoft.com/search/fuzzy/json?api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=pizza
Observação
O atributo json no caminho da URL determina o formato da resposta. Este artigo usa o JSON para facilitar o uso e a legibilidade. Para localizar outros formatos de resposta com suporte, confira a
format
definição de parâmetro na documentação de referência de parâmetro de URI.Selecione o botão executar e examine o corpo da resposta.
A cadeia de caracteres de consulta ambígua para "pizza" retornou dez resultados de POI (ponto de interesse) nas duas categorias "pizza" e "restaurante". Cada resultado inclui detalhes como endereço de rua, valores de latitude e longitude, vista da porta e pontos de entrada para o local. Os resultados agora são variados para esta consulta e não estão vinculados a nenhum local de referência.
Na próxima etapa, você usará o parâmetro
countrySet
para especificar apenas os países/regiões para os quais seu aplicativo precisa de cobertura. Para obter uma lista completa de países/regiões com suporte, confira Cobertura de geocodificação do Azure Mapas.O comportamento padrão é pesquisar o mundo inteiro, retornando resultados potencialmente desnecessários. Em seguida, procure pizza apenas nos Estados Unidos. Adicione a
countrySet
chave à seção Params e defina o valor comoUS
. Definir a chavecountrySet
paraUS
limita os resultados aos Estados Unidos.Os resultados agora são limitados pelo código do país e a consulta retorna as pizzarias no Brasil.
Para obter uma pesquisa ainda mais direcionada, você pode pesquisar o escopo de um par de coordenadas lat/lon. O exemplo a seguir usa as coordenadas lat/lon do Seattle Space Needle. Como queremos retornar apenas os resultados dentro de um raio de 400 metros, adicionamos o parâmetro
radius
. Além disso, adicionamos o parâmetrolimit
para limitar os resultados às cinco pizzarias mais próximas.Na seção Params, adicione os seguintes pares de chave/valor:
Chave Valor lat 47.620525 lon -122.349274 raio 400 limite 5 Selecione Execução. A resposta inclui resultados para os restaurantes de pizza próximos à Agulha Espacial de Seattle.
Procurar um endereço usando a Pesquisa Invertida de Endereço
Obter Endereços de Pesquisa Inversa converte as coordenadas em endereços legíveis por pessoas. Essa API é usada com frequência por aplicativos que consomem feeds de GPS e desejam descobrir endereços em pontos de coordenadas específicos.
Importante
Para resultados geopolares para a área relevante para seus usuários, sempre adicione o máximo possível de detalhes de local. Para obter mais informações, confira Melhores práticas para Pesquisa.
Dica
Caso tenha um conjunto de locais de coordenadas para inverter o geocódigo, use Postar Lote de Pesquisa Inversa de Endereço para enviar um lote de consultas em uma só solicitação.
Este exemplo demonstra a realização de pesquisas reversas usando alguns dos parâmetros opcionais disponíveis. Para obter a lista completa dos parâmetros opcionais, consulte Parâmetros de pesquisa inversa.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NOVA SOLICITAÇÃO, defina Tipo como HTTP. Digite um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa de URL e, em seguida, insira a seguinte 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
Selecione o botão executar e examine o corpo da resposta. Deverá ser possível ver o resultado de uma consulta. A resposta inclui informações importantes sobre o endereço do Safeco Field.
Em seguida, adicione os seguintes pares de chave/valor à seção Parâmetros:
Chave Valor Retornos número 1 A resposta pode incluir o lado da rua (esquerda/direita) e também uma posição ajustada para o número. returnSpeedLimit true Retorna o limite de velocidade no endereço. returnRoadUse true Retorna os tipos de uso de estrada no endereço. Para todos os tipos de uso de estrada possíveis, consulte Tipos de uso de estrada. returnMatchType true Retorna o tipo de combinação. Para ver todos os valores possíveis, confira Resultados da pesquisa inversa de endereço. Selecione o botão executar e examine o corpo da resposta.
Em seguida, adicione a chave
entityType
e defina o valor dela comoMunicipality
. A chaveentityType
substitui a chavereturnMatchType
na etapa anterior.returnSpeedLimit
ereturnRoadUse
também precisam ser removidos, pois você está solicitando informações sobre o município. Para todos os tipos de entidade possíveis, consulte Tipos de entidade.Selecione o botão executar. Compare os resultados com os resultados retornados na etapa 5. Como o tipo de entidade solicitado agora é
municipality
, a resposta não inclui as informações de endereço. Além disso, ogeometryId
retornado pode ser usado para solicitar o polígono de limite por meio do Azure Mapas obter API de polígono de pesquisa.
Dica
Para obter mais informações sobre esses e outros parâmetros, confira Parâmetros de Pesquisa Reversa.
Pesquise o cruzamento usando Pesquisa Inversa de Endereço de Cruzamento
Este exemplo demonstra como procurar uma rua transversal com base nas coordenadas de um endereço.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NOVA SOLICITAÇÃO, defina Tipo como HTTP. Digite um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa de URL e, em seguida, insira a seguinte 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
Selecione o botão executar e examine o corpo da resposta. Observe que a resposta contém um valor
crossStreet
deSouth Atlantic Street
.