Freigeben über


Suchen nach einem Ort mit dem Suchdienst von Azure Maps

Beim Suchdienst handelt es sich um eine Gruppe von RESTful-APIs, die Entwickler bei der Suche nach Adressen, Orten und Brancheneinträgen nach Name, Kategorie und anderen geografischen Informationen unterstützen. Zusätzlich zur Unterstützung der traditionellen Geocodierung kann mit den Diensten eine inverse Geocodierung für Adressen und Querstraßen basierend auf Breiten- und Längengraden durchgeführt werden. Die bei der Suche zurückgegebenen Werte für den Breiten- und Längengrad können als Parameter in anderen Azure Maps-Diensten verwendet werden, beispielsweise Routen und Wetter.

Dieser Artikel demonstriert Folgendes:

  • Anfordern von Breitengrad- und Längengradkoordinaten für eine Adresse (Adressposition für Geocodierung) mithilfe von Adresse suchen.
  • Suchen nach einer Adresse oder einem Point of Interest (POI) mithilfe der Fuzzysuche.
  • Verwenden von Reverse Address Search (inverse Adresssuche), um den Koordinatenpositionen in eine Straßenadresse zu übersetzen.
  • Übersetzen Sie die Koordinatenposition mithilfe von Search Address Reverse Cross Street (Suchadresse für Querstraße invers) in eine für Menschen verständliche Straßenüberquerung, die am häufigsten in Tracking-Anwendungen benötigt wird, die einen GPS-Feed von einem Gerät oder Medienobjekt empfangen, und möchten wissen, wo sich die Koordinate befindet.

Voraussetzungen

Wichtig

In den URL-Beispielen in diesem Artikel müssen Sie {Your-Azure-Maps-Subscription-key} durch Ihren Azure Maps-Abonnementschlüssel ersetzen.

In diesem Artikel wird die Anwendung bruno verwendet. Sie können aber auch eine andere API-Entwicklungsumgebung verwenden.

Anfordern des Breiten- und Längengrads für eine Adresse (Geocodierung)

Im Beispiel in diesem Abschnitt wird Get Search Address (Abrufen der Adresssuche) verwendet, um eine Adresse in Breitengrad- und Längengradkoordinaten zu konvertieren. Dieser Vorgang wird auch als Geocodierung bezeichnet. Zusätzlich zu den Koordinaten werden in der Antwort auch detaillierte Adressinformationen zurückgegeben, darunter beispielsweise Straße, Postleitzahl, Gemeinde und Land/Region.

Tipp

Wenn Sie über eine Gruppe von Adressen für die Geocodierung verfügen, können Post Search Address Batch (Batchadresssuche posten) verwenden, um einen Batch von Abfragen in einer einzigen Anforderung zu senden.

  1. Öffnen Sie die bruno-App, und wählen Sie NEW REQUEST aus, um die Anforderung zu erstellen. Legen Sie im Fenster NEW REQUEST den Typ auf HTTP fest. Geben Sie einen Namen für die Anforderung ein.

  2. Wählen Sie die HTTP-Methode GET in der Dropdownliste URL aus, und geben Sie dann die folgende URL ein:

    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. Wählen Sie die Schaltfläche Erstellen.

  4. Klicken Sie auf die Schaltfläche „Ausführen“.

    Diese Anforderung sucht nach einer bestimmten Adresse: 400 Broad St, Seattle, WA 98109. Suchen Sie als Nächstes nach einer Adresse mit mehr als einem möglichen Standort.

  5. Ändern Sie im Abschnitt Params den Schlüssel query in 400 Broad, Seattle, und wählen Sie dann die Schaltfläche zum Ausführen aus.

    Suchen nach einer Adresse

  6. Legen Sie dann den Schlüssel query auf 400 Broa fest, und wählen Sie die Schaltfläche zum Ausführen aus.

    Die Antwort umfasst Ergebnisse aus mehreren Ländern/Regionen. Fügen Sie der Anforderung immer so viele Standortangaben wie möglich hinzu, damit die Ergebnisse dem für Ihren Benutzer relevanten geografischen Bereich entsprechen.

Fuzzy Search (Fuzzysuche) unterstützt einzeilige Standardsuchen und Freiformsuchen. Es wird empfohlen, die Azure Maps-API für die Fuzzysuche zu verwenden, wenn Sie den Benutzereingabetyp für eine Suchabfrage nicht kennen. Die Abfrageeingabe kann eine vollständige oder eine unvollständige Adresse sein. Es kann sich auch um ein POI-Token (Point of Interest) handeln, z. B. einen POI-Namen, eine POI-Kategorie oder einen Markennamen. Darüber hinaus können die Abfrageergebnisse durch eine Koordinatenposition und einen Radius oder durch das Definieren eines Begrenzungsrahmens eingeschränkt werden, um die Relevanz Ihrer Suchergebnisse zu verbessern.

Tipp

Die meisten Suchabfragen sind zur Leistungssteigerung und Verringerung ungewöhnlicher Ergebnisse standardmäßig auf maxFuzzyLevel=1 festgelegt. Passen Sie die Fuzzyebene mithilfe der Parameter maxFuzzyLevel oder minFuzzyLevel an. Weitere Informationen zu maxFuzzyLevel und eine vollständige Liste aller optionalen Parameter finden Sie unter URI-Parameter für Fuzzy Search (Fuzzysuche).

Im Beispiel in diesem Abschnitt wird Fuzzy Search verwendet, um die gesamte Welt nach Pizza zu durchsuchen, und dann wird der Bereich eines bestimmten Landes/einer bestimmten Region durchsucht. Abschließend wird beschrieben, wie Sie eine Koordinatenposition und einen Radius verwenden, um eine Suche auf einen bestimmten Bereich einzuschränken und die Anzahl der zurückgegebenen Ergebnisse zu begrenzen.

Wichtig

Fügen Sie immer so viele Standortangaben wie möglich hinzu, damit die Ergebnisse dem für Ihren Benutzer relevanten geografischen Bereich entsprechen. Weitere Informationen finden Sie unter Best Practices für die Suche.

  1. Öffnen Sie die bruno-App, und wählen Sie NEW REQUEST aus, um die Anforderung zu erstellen. Legen Sie im Fenster NEW REQUEST den Typ auf HTTP fest. Geben Sie einen Namen für die Anforderung ein.

  2. Wählen Sie die HTTP-Methode GET in der Dropdownliste URL aus, und geben Sie dann die folgende URL ein:

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

    Hinweis

    Das Attribut json im URL-Pfad legt das Antwortformat fest. In diesem Artikel wird JSON verwendet, um die Benutzerfreundlichkeit und Lesbarkeit zu verbessern. Informationen zu weiteren unterstützten Antwortformaten finden Sie in der Definition des format-Parameters in der Dokumentation Referenz für URI-Parameter.

  3. Wählen Sie die Schaltfläche zum Ausführen aus, und überprüfen Sie dann den Antworttext.

    Die mehrdeutige Abfragezeichenfolge „pizza“ hat 10 POI-Ergebnisse (Point of Interest) sowohl in der Kategorie „Pizza“ als auch in der Kategorie „Restaurant“ zurückgegeben. Jedes Ergebnis enthält eine Adresse, Werte für den Breiten- und Längengrad, ein Bildausschnitt und Einstiegspunkte für den Standort. Die Ergebnisse für diese Abfrage variieren und sind mit keinem bestimmten Referenzstandort verbunden.

    Im nächsten Schritt wird der Parameter countrySet verwendet, um nur die Länder/Regionen anzugeben, die von Ihrer Anwendung abgedeckt werden sollen. Eine vollständige Liste der unterstützten Länder/Regionen finden Sie unter Geocodierungsabdeckung in Azure Maps.

  4. Das Standardverhalten besteht darin, die ganze Welt zu durchsuchen, wodurch unnötige Ergebnisse zurückgegeben werden können. Als Nächstes suchen wir nach „pizza“ nur in den USA. Fügen Sie dem Abschnitt countrySetParamsden Schlüssel hinzu, und legen Sie seinen Wert auf US fest. Durch das Festlegen des Schlüssels countrySet auf US werden die Ergebnisse auf die USA beschränkt.

    Suche nach „pizza“ in den USA

    Die Ergebnisse werden nun durch den Ländercode begrenzt, und die Abfrage gibt Pizzerien in den USA zurück.

  5. Um eine noch gezieltere Suche durchzuführen, können Sie als Suchbereich ein lat/lon-Koordinatenpaar festlegen. Im folgenden Beispiel werden die lat/lon-Koordinaten der Seattle Space Needle verwendet. Da wir nur die Ergebnisse innerhalb eines Radius von 400 Metern zurückgeben möchten, fügen wir den Parameter radius hinzu. Außerdem verwenden wir den Parameter limit, um die Ergebnisse auf die fünf nächstgelegenen Pizzerien zu beschränken.

    Fügen Sie dem Abschnitt Params die folgenden Schlüssel-Wert-Paare hinzu:

    Schlüssel Wert
    lat 47.620525
    lon -122.349274
    Radius 400
    limit 5
  6. Wählen Sie „Ausführen“ aus. Die Antwort enthält die Ergebnisse für Pizzerien in der Nähe der Space Needle in Seattle.

Get Search Address Reverse (Abrufen der inversen Adresssuche) übersetzt Koordinaten in für Menschen lesbare Straßenadressen. Diese API wird häufig für Anwendungen verwendet, die einen GPS-Feed empfangen und Adressen an bestimmten Koordinatenpunkten ermitteln sollen.

Wichtig

Fügen Sie immer so viele Standortangaben wie möglich hinzu, damit die Ergebnisse dem für Ihren Benutzer relevanten geografischen Bereich entsprechen. Weitere Informationen finden Sie unter Best Practices für die Suche.

Tipp

Wenn Sie über eine Gruppe von Koordinatenpositionen für die inverse Geocodierung verfügen, können Sie Post Search Address Reverse Batch (Inverse Batchadresssuche posten) verwenden, um einen Batch von Abfragen in einer einzigen Anforderung zu senden.

In diesem Beispiel wird erklärt, wie mithilfe einiger der verfügbaren optionalen Parameter eine umgekehrte Suche durchgeführt wird. Eine vollständige Liste der optionalen Parameter finden Sie im Abschnitt zu den Parametern für die umgekehrte Suche.

  1. Öffnen Sie die bruno-App, und wählen Sie NEW REQUEST aus, um die Anforderung zu erstellen. Legen Sie im Fenster NEW REQUEST den Typ auf HTTP fest. Geben Sie einen Namen für die Anforderung ein.

  2. Wählen Sie die HTTP-Methode GET in der Dropdownliste URL aus, und geben Sie dann die folgende URL ein:

    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
    
  3. Wählen Sie die Schaltfläche zum Ausführen aus, und überprüfen Sie dann den Antworttext. Es sollte nur ein Abfrageergebnis angezeigt werden. Die Antwort enthält Schlüsseladressinformationen über Safeco Field.

  4. Fügen Sie dann dem Abschnitt Params die folgenden Schlüssel-Wert-Paare hinzu:

    Schlüssel Wert Rückgabe
    number 1 Die Antwort kann die Straßenseite (links/rechts) und außerdem eine Versatzposition für die Hausnummer enthalten.
    returnSpeedLimit true Gibt das Tempolimit an der Adresse zurück.
    returnRoadUse true Gibt den Straßentyp an der Adresse zurück. Eine Übersicht der möglichen Straßentypen finden Sie im Abschnitt URI-Parameter.
    returnMatchType true Gibt den Typ der Übereinstimmung zurück. Eine Übersicht aller möglichen Werte finden Sie unter Reverse Address Search Results (Ergebnisse der inversen Adresssuche).

    Umgekehrte Suche

  5. Wählen Sie die Schaltfläche zum Ausführen aus, und überprüfen Sie dann den Antworttext.

  6. Als Nächstes fügen Sie den Schlüssel entityType hinzu und legen seinen Wert auf Municipality fest. Der Schlüssel entityType überschreibt den Schlüssel returnMatchType im vorherigen Schritt. returnSpeedLimit und returnRoadUse müssen auch entfernt werden, da Sie Informationen über die Gemeinde anfordern. Eine Liste aller möglichen Typen finden Sie unter EntityType.

    Umgekehrte Suche nach „entityType“

  7. Klicken Sie auf die Schaltfläche „Ausführen“. Vergleichen Sie die Ergebnisse mit denen in Schritt 5. Der angeforderte Entitätstyp lautet jetzt municipality, deshalb enthält die Antwort keine Informationen zur Anschrift. Der zurückgegebene geometryId-Wert kann darüber hinaus zum Anfordern eines Begrenzungspolygons über die Azure Maps-API zum Abrufen von Suchpolygonen verwendet werden.

Tipp

Weitere Informationen zu diesen und anderen Parametern finden Sie unter Parameter für inverse Suche.

In diesem Beispiel wird gezeigt, wie basierend auf den Koordinaten einer Adresse nach einer Querstraße gesucht werden kann.

  1. Öffnen Sie die bruno-App, und wählen Sie NEW REQUEST aus, um die Anforderung zu erstellen. Legen Sie im Fenster NEW REQUEST den Typ auf HTTP fest. Geben Sie einen Namen für die Anforderung ein.

  2. Wählen Sie die HTTP-Methode GET in der Dropdownliste URL aus, und geben Sie dann die folgende URL ein:

    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
    
  3. Wählen Sie die Schaltfläche zum Ausführen aus, und überprüfen Sie dann den Antworttext. Beachten Sie, dass die Antwort den Wert South Atlantic Street für crossStreet enthält.

Nächste Schritte