Een locatie zoeken met behulp van Azure Maps Search-service s
De Search-service is een set RESTful-API's die zijn ontworpen om ontwikkelaars te helpen bij het zoeken naar adressen, plaatsen en zakelijke vermeldingen op naam, categorie en andere geografische informatie. Naast het ondersteunen van traditionele geocodering, kunnen services ook de adressen van geocoderen en dwarsstraten omkeren op basis van breedtegraad en lengtegraad. Waarden voor breedtegraad en lengtegraad die door de zoekopdracht worden geretourneerd, kunnen worden gebruikt als parameters in andere Azure Maps-services, zoals Route en Weer.
In dit artikel wordt uitgelegd hoe u het volgende kunt doen:
- Vraag de breedte- en lengtegraadcoördinaten voor een adres (locatie van geocodeeradres) aan met behulp van het zoekadres.
- Zoek naar een adres of nuttige plaats (NUTTIGE) met behulp van Fuzzy Search.
- Gebruik Reverse Address Search om de coördinaatlocatie te vertalen naar adres.
- Vertaal de coördinatenlocatie in een begrijpelijke cross street met behulp van Search Address Reverse Cross Street, meestal nodig bij het bijhouden van toepassingen die een GPS-feed ontvangen van een apparaat of asset en wil weten waar de coördinaat zich bevindt.
Vereisten
- Een Azure Maps-account
- Een abonnementssleutel
Belangrijk
In de URL-voorbeelden in dit artikel moet u vervangen door {Your-Azure-Maps-Subscription-key}
uw Azure Maps-abonnementssleutel.
In dit artikel wordt de bruno-toepassing gebruikt, maar u kunt een andere API-ontwikkelomgeving kiezen.
Breedtegraad en lengtegraad aanvragen voor een adres (geocodering)
In het voorbeeld in deze sectie wordt Het zoekadres ophalen gebruikt om een adres te converteren naar coördinaten voor breedtegraad en lengtegraad. Dit proces wordt ook wel geocodering genoemd. Naast het retourneren van de coördinaten retourneert het antwoord ook gedetailleerde adreseigenschappen zoals straat-, postcode-, gemeente- en land-/regiogegevens.
Tip
Als u een set adressen voor geocode hebt, kunt u Post Search Address Batch gebruiken om een batch query's in één aanvraag te verzenden.
Open de bruno-app, selecteer NIEUWE AANVRAAG om de aanvraag te maken. Stel in het venster NEW REQUEST het type in op HTTP. Voer een naam in voor de aanvraag.
Selecteer de GET HTTP-methode in de vervolgkeuzelijst URL en voer vervolgens de volgende URL in:
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
Selecteer de knop Maken.
Selecteer de knop Uitvoeren.
Met deze aanvraag wordt gezocht naar een specifiek adres:
400 Broad St, Seattle, WA 98109
. Zoek vervolgens een adres met meer dan één mogelijke locatie.Wijzig in de sectie Params de
query
sleutel in400 Broad, Seattle
en selecteer vervolgens de knop Uitvoeren.Probeer vervolgens de
query
sleutel in te400 Broa
stellen en selecteer vervolgens de knop Uitvoeren.Het antwoord bevat resultaten van meerdere landen/regio's. Als u resultaten van geobias wilt toevoegen aan het relevante gebied voor uw gebruikers, voegt u altijd zoveel mogelijk locatiegegevens toe aan de aanvraag.
Fuzzy Zoeken
Fuzzy Search ondersteunt standaard zoekopdrachten met één regel en vrije vormen. U wordt aangeraden de Fuzzy API van Azure Maps Search te gebruiken wanneer u uw invoertype van de gebruiker niet weet voor een zoekaanvraag. De query-invoer kan een volledig of gedeeltelijk adres zijn. Het kan ook een NUTTIGE-token (Point of Interest) zijn, zoals een naam van POI, POI-categorie of merknaam. Als u bovendien de relevantie van uw zoekresultaten wilt verbeteren, beperkt u de queryresultaten met behulp van een coördinaatlocatie en radius, of door een begrenzingsvak te definiëren.
Tip
De meeste zoekquery's zijn standaard ingesteld om de prestaties te maxFuzzyLevel=1
verbeteren en ongebruikelijke resultaten te verminderen. Pas de niveaus van de scherpte aan met behulp van de maxFuzzyLevel
of minFuzzyLevel
parameters. Zie Fuzzy Search URI-parameters voor meer informatie over maxFuzzyLevel
en een volledige lijst met alle optionele parameters.
Zoeken naar een adres met Fuzzy Search
In het voorbeeld in deze sectie wordt gebruikgemaakt Fuzzy Search
van het doorzoeken van de hele wereld naar pizza en wordt vervolgens gezocht naar het bereik van een specifiek land/regio. Ten slotte wordt gedemonstreerd hoe u een coördinaatlocatie en radius gebruikt om een zoekopdracht over een bepaald gebied te beperken en het aantal geretourneerde resultaten te beperken.
Belangrijk
Als u resultaten van geobias wilt toevoegen aan het relevante gebied voor uw gebruikers, voegt u altijd zoveel mogelijk locatiegegevens toe. Zie Aanbevolen procedures voor zoeken voor meer informatie.
Open de bruno-app, selecteer NIEUWE AANVRAAG om de aanvraag te maken. Stel in het venster NEW REQUEST het type in op HTTP. Voer een naam in voor de aanvraag.
Selecteer de GET HTTP-methode in de vervolgkeuzelijst URL en voer vervolgens de volgende URL in:
https://atlas.microsoft.com/search/fuzzy/json?api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=pizza
Notitie
Het json-kenmerk in het URL-pad bepaalt de antwoordindeling. In dit artikel wordt json gebruikt voor gebruiksgemak en leesbaarheid. Zie de parameterdefinitie in de
format
referentiedocumentatie voor URI-parameters voor andere ondersteunde antwoordindelingen.Selecteer de knop Uitvoeren en controleer vervolgens de hoofdtekst van het antwoord.
De dubbelzinnige queryreeks voor 'pizza' retourneert 10 nuttige plaatsen (POI) resulteert in zowel de categorieën 'pizza' als 'restaurant'. Elk resultaat bevat details zoals straatadres, breedtegraad- en lengtegraadwaarden, weergavepoort en toegangspunten voor de locatie. De resultaten zijn nu gevarieerd voor deze query en zijn niet gekoppeld aan een referentielocatie.
In de volgende stap gebruikt u de
countrySet
parameter om alleen de landen/regio's op te geven waarvoor uw toepassing dekking nodig heeft. Zie de geografische coderingsdekking van Azure Maps voor een volledige lijst met ondersteunde landen/regio's.Het standaardgedrag is het doorzoeken van de hele wereld, waardoor onnodige resultaten kunnen worden geretourneerd. Zoek vervolgens alleen naar pizza in de Verenigde Staten. Voeg de sleutel toe aan de sectie Params en stel de
countrySet
waarde in opUS
. Als u decountrySet
sleutel instelt om de resultaten teUS
koppelen aan de Verenigde Staten.De resultaten zijn nu gebonden aan de landcode en de query retourneert pizzarestaurants in de Verenigde Staten.
Om een nog gerichtere zoekopdracht te krijgen, kunt u zoeken over het bereik van een lat/lon-coördinaatpaar. In het volgende voorbeeld worden de lat/lon-coördinaten van de Seattle Space Needle gebruikt. Omdat we alleen resultaten binnen een straal van 400 meter willen retourneren, voegen we de
radius
parameter toe. Daarnaast voegen we delimit
parameter toe om de resultaten te beperken tot de vijf dichtstbijzijnde pizzaplaatsen.Voeg in de sectie Params de volgende sleutel-waardeparen toe:
Sleutel Weergegeven als Lat 47.620525 Lon -122.349274 radius 400 limiet 5 Selecteer Uitvoeren. Het antwoord bevat resultaten voor pizzarestaurants in de buurt van de Seattle Space Needle.
Een adres zoeken met Reverse Address Search
Get Search Address Reverse vertaalt coördinaten in door mensen leesbare straatadressen. Deze API wordt vaak gebruikt voor toepassingen die GPS-feeds verbruiken en adressen op specifieke coördinatenpunten willen detecteren.
Belangrijk
Als u resultaten van geobias wilt toevoegen aan het relevante gebied voor uw gebruikers, voegt u altijd zoveel mogelijk locatiegegevens toe. Zie Aanbevolen procedures voor zoeken voor meer informatie.
Tip
Als u een set coördinaatlocaties hebt om geocode om te keren, kunt u Post Search Address Reverse Batch gebruiken om een batch query's in één aanvraag te verzenden.
In dit voorbeeld ziet u hoe u omgekeerde zoekopdrachten maakt met behulp van een aantal optionele parameters die beschikbaar zijn. Zie Parameters voor reverse search voor de volledige lijst met optionele parameters.
Open de bruno-app, selecteer NIEUWE AANVRAAG om de aanvraag te maken. Stel in het venster NEW REQUEST het type in op HTTP. Voer een naam in voor de aanvraag.
Selecteer de GET HTTP-methode in de vervolgkeuzelijst URL en voer vervolgens de volgende URL in:
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
Selecteer de knop Uitvoeren en controleer de hoofdtekst van het antwoord. Als het goed is, ziet u één queryresultaat. Het antwoord bevat belangrijke adresinformatie over Safeco Field.
Voeg vervolgens de volgende sleutel-/waardeparen toe aan de sectie Params :
Sleutel Weergegeven als Retouren Nummer 1 Het antwoord kan de zijkant van de straat (links/rechts) en ook een verschuivingspositie voor het getal bevatten. returnSpeedLimit true Retourneert de snelheidslimiet op het adres. returnRoadUse true Retourneert weggebruiktypen op het adres. Zie Weggebruikstypen voor alle mogelijke typen weggebruik. returnMatchType true Retourneert het type overeenkomst. Zie Zoekresultaten voor omgekeerde adressen voor alle mogelijke waarden. Selecteer de knop Uitvoeren en controleer de hoofdtekst van het antwoord.
Voeg vervolgens de sleutel toe en stel de
entityType
waarde in opMunicipality
. DeentityType
sleutel overschrijft dereturnMatchType
sleutel in de vorige stap.returnSpeedLimit
enreturnRoadUse
moet ook worden verwijderd omdat u informatie over de gemeente aanvraagt. Zie Entiteitstypen voor alle mogelijke entiteitstypen.Selecteer de knop Uitvoeren. Vergelijk de resultaten met de resultaten die in stap 5 zijn geretourneerd. Omdat het aangevraagde entiteitstype nu
municipality
is, bevat het antwoord geen adresgegevens. De geretourneerdegeometryId
functie kan ook worden gebruikt om grens veelhoek aan te vragen via de Get Search Polygon-API van Azure Maps.
Tip
Zie Parameters voor reverse search voor meer informatie over deze en andere parameters.
Zoeken naar cross street met Reverse Address Cross Street Search
In dit voorbeeld ziet u hoe u zoekt naar een kruisstraat op basis van de coördinaten van een adres.
Open de bruno-app, selecteer NIEUWE AANVRAAG om de aanvraag te maken. Stel in het venster NEW REQUEST het type in op HTTP. Voer een naam in voor de aanvraag.
Selecteer de GET HTTP-methode in de vervolgkeuzelijst URL en voer vervolgens de volgende URL in:
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
Selecteer de knop Uitvoeren en controleer de hoofdtekst van het antwoord. U ziet dat het antwoord een
crossStreet
waarde vanSouth Atlantic Street
.