Text Search (New)

Plattform auswählen: Android iOS JavaScript Webdienst

Bei „Text Search“ werden Informationen zu einer Reihe von Orten basierend auf einem String zurückgegeben. Beispiele: „Pizza in New York“, „Schuhgeschäfte in der Nähe von Hamburg“ oder „Hauptstraße 123“. Der Dienst gibt eine Liste von Orten zurück, die dem Textstring und der festgelegten Standortgewichtung entsprechen.

Der Dienst ist besonders nützlich für mehrdeutige Adressabfragen in einem automatisierten System. Dabei können nicht adressierte Komponenten des Strings sowohl mit Unternehmen als auch mit Adressen übereinstimmen. Beispiele für mehrdeutige Adressabfragen sind schlecht formatierte Adressen oder Anfragen, die Nicht-Adresskomponenten enthalten, z. B. Unternehmensnamen. Anfragen wie in den ersten beiden Beispielen geben möglicherweise keine Ergebnisse zurück, es sei denn, ein Standort (z. B. Region, Standortbeschränkung oder Standortgewichtung) ist festgelegt.

„10 High Street, UK“ oder „123 Main Street, US“ Mehrere "High Streets" im Vereinigten Königreich und mehrere "Main Streets" in den USA Die Abfrage gibt nur dann die gewünschten Ergebnisse zurück, wenn eine Standortbeschränkung festgelegt ist.
„Restaurantkette New York“ Mehrere Standorte von „Restaurantketten“ in New York; weder Adresse noch Straßenname.
„10 High Street, Escher UK“ oder „123 Main Street, Pleasanton US“ Nur eine "High Street" in der Stadt Escher im Vereinigten Königreich und nur eine "Main Street" in Pleasanton, Kalifornien.
„UniqueRestaurantName New York“ Nur eine Einrichtung mit diesem Namen in New York. Zur Unterscheidung ist keine Adresse erforderlich.
„pizzerien in new york“ Diese Abfrage enthält die Standortbeschränkung und „Pizzerias“ ist ein klar definierter Ortstyp. Es werden mehrere Ergebnisse zurückgegeben.
„+49 514 670 8700“

Diese Abfrage enthält eine Telefonnummer. Für Orte, die mit dieser Telefonnummer verknüpft sind, werden mehrere Ergebnisse zurückgegeben.

Liste von Orten per Textsuche abrufen

Stellen Sie eine Text Search-Anfrage, indem Sie GMSPlacesClient searchByTextWithRequest: aufrufen und ein GMSPlaceSearchByTextRequest-Objekt übergeben, das die Anfrageparameter und eine Callback-Methode vom Typ GMSPlaceSearchByTextResultCallback zur Verarbeitung der Antwort definiert.

Das Objekt GMSPlaceSearchByTextRequest gibt alle erforderlichen und optionalen Parameter für die Anfrage an. Zu den erforderlichen Parametern gehören:

  • Die Liste der Felder, die im GMSPlace-Objekt zurückgegeben werden sollen, auch als Feldmaske bezeichnet, wie durch GMSPlaceProperty definiert. Wenn Sie in der Feldliste nicht mindestens ein Feld angeben oder die Feldliste auslassen, gibt der Aufruf einen Fehler zurück.
  • Die Textabfrage.

In diesem Beispiel für eine Textsuchanfrage wird angegeben, dass die GMSPlace-Antwortobjekte den Ortsnamen und die Orts-ID für jedes GMSPlace-Objekt in den Suchergebnissen enthalten. Außerdem wird die Antwort so gefiltert, dass nur Orte vom Typ „restaurant“ zurückgegeben werden.

Swift

// Create the GMSPlaceSearchByTextRequest object.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue}
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)

// Array to hold the places in the response
var placeResults: [GMSPlace] = []

let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  placeResults = results
}

GMSPlacesClient.shared().searchByText(with: request, callback: callback)

Objective-C

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0);

// Array to hold the places in the response
_placeResults = [NSArray array];

// Create the GMSPlaceSearchByTextRequest object.
[_placesClient searchByTextWithRequest:request
    callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"An error occurred %@", [error localizedDescription]);
        return;
      } else {
        if (placeResults.count > 0) {
          // Get list of places.
          _placeResults = placeResults;
      }
    }
  }
];

GooglePlacesSwift

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Text Search-Antworten

Die Text Search API gibt ein Array von Übereinstimmungen in Form von GMSPlace-Objekten mit einem GMSPlace-Objekt pro übereinstimmendem Ort zurück.

Zusammen mit den Datenfeldern enthält das Objekt GMSPlace in der Antwort die folgenden Member-Funktionen:

  • isOpen berechnet, ob ein Ort zur angegebenen Zeit geöffnet ist.
  • Mit isOpenAtDate wird berechnet, ob ein Ort an einem bestimmten Datum geöffnet ist.

Erforderliche Parameter

Verwenden Sie das Objekt GMSPlaceSearchByTextRequest, um die erforderlichen Parameter für die Suche anzugeben.

  • Liste der Felder

    Geben Sie an, welche Eigenschaften von Ortsdaten zurückgegeben werden sollen. Übergeben Sie eine Liste von GMSPlace-Properties und geben Sie die Datenfelder an, die zurückgegeben werden sollen. Wenn Sie die Feldmaske weglassen, gibt die Anfrage einen Fehler zurück.

    Feldlisten sind eine gute Strategie, um sicherzustellen, dass keine unnötigen Daten angefordert werden. So lassen sich unnötige Verarbeitungszeiten und Gebühren vermeiden.

    Geben Sie eines oder mehrere der folgenden Felder an:

    • Die folgenden Felder lösen die SKU „Text Search (ID Only)“ aus:

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • Die folgenden Felder lösen die SKU „Text Search (Basic)“ aus:

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • Die folgenden Felder lösen die SKU „Text Search (Advanced)“ aus:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • Die folgenden Felder lösen die SKU „Text Search (Preferred)“ aus:

      GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout
  • textQuery

    Die Textzeichenfolge, nach der gesucht werden soll, z. B. „Restaurant“, „Hauptstraße 123“ oder „beste Sehenswürdigkeit in San Francisco“.

Optionale Parameter

Verwenden Sie das Objekt GMSPlaceSearchByTextRequest, um die optionalen Parameter für die Suche anzugeben.

  • includedType

    Beschränkt die Ergebnisse auf Orte, die dem in Tabelle A definierten Typ entsprechen. Es kann nur ein Typ angegeben werden. Beispiel:

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • isOpenNow

    Bei true werden nur die Orte zurückgegeben, die beim Senden der Abfrage geöffnet haben. Bei false werden alle Unternehmen unabhängig vom Öffnungsstatus zurückgegeben. Wenn Sie diesen Parameter auf false festlegen, werden Orte zurückgegeben, für die in der Google Places-Datenbank keine Öffnungszeiten angegeben sind.

  • isStrictTypeFiltering

    Wird mit dem Parameter includeType verwendet. Wenn true festgelegt ist, werden nur Orte zurückgegeben, die den durch includeType angegebenen Typen entsprechen. Ist die Richtlinie auf „false“ gesetzt, kann die Antwort Orte enthalten, die nicht mit den angegebenen Typen übereinstimmen.

  • locationBias

    Gibt das Gebiet an, in dem gesucht werden soll. Dieser Standort dient als Verzerrung, d. h., Ergebnisse um den angegebenen Standort herum können zurückgegeben werden, auch solche außerhalb des angegebenen Bereichs.

    Sie können locationRestriction oder locationBias angeben, aber nicht beides. Stellen Sie sich locationRestriction vor, um die Region anzugeben, in der sich die Ergebnisse befinden müssen, und locationBias die Region, in der sich die Ergebnisse befinden müssen, aber außerhalb des Bereichs sein können.

    Legen Sie den Bereich als rechteckigen Darstellungsbereich oder als Kreis fest.

    • Ein Kreis wird durch einen Mittelpunkt und einen Radius in Metern definiert. Der Radius muss zwischen 0,0 und 50.000,0 (einschließlich) liegen. Der Standardradius ist 0,0. Beispiel:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
      
    • Ein Rechteck ist ein Darstellungsbereich mit Breiten- und Längengrad, der als zwei diagonal gegenüberliegende niedrige und hohe Punkte dargestellt wird. Der Tiefpunkt stellt die südwestliche Ecke des Rechtecks und der höchste Punkt die nordöstliche Ecke des Rechtecks dar.

      Ein Darstellungsbereich gilt als geschlossener Bereich, d. h. er umfasst seine Begrenzung. Die Breitengradgrenzen müssen zwischen -90 und 90 Grad und die Längengradgrenzen zwischen -180 und 180 Grad liegen.

      • Wenn low = high, besteht der Darstellungsbereich aus diesem einzelnen Punkt.
      • Ist low.longitude > high.longitude, wird der Längengradbereich umgekehrt (der Darstellungsbereich kreuzt die 180-Grad-Längenlinie).
      • Wenn low.longitude = -180 Grad und high.longitude = 180 Grad ist, enthält der Darstellungsbereich alle Längengrade.
      • Wenn low.longitude = 180 Grad und high.longitude = -180 Grad ist, ist der Längengradbereich leer.
      • Wenn low.latitude > high.latitude ist, ist der Breitengradbereich leer.
  • locationRestriction

    Gibt das Gebiet an, in dem gesucht werden soll. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben. Legen Sie den Bereich als rechteckigen Darstellungsbereich fest. Informationen zum Definieren des Darstellungsbereichs finden Sie in der Beschreibung von locationBias.

    Sie können locationRestriction oder locationBias angeben, aber nicht beides. Stellen Sie sich locationRestriction vor, um die Region anzugeben, in der sich die Ergebnisse befinden müssen, und locationBias die Region, in der sich die Ergebnisse befinden müssen, aber außerhalb des Bereichs sein können.

  • maxResultCount

    Gibt die maximale Anzahl der Ortsergebnisse an, die zurückgegeben werden sollen. Der Wert muss zwischen 1 und 20 (Standardeinstellung) liegen.

  • minRating

    Beschränkt die Ergebnisse auf Nutzer, deren durchschnittliche Nutzerbewertung größer oder gleich dieser Grenze ist. Die Werte müssen zwischen 0,0 und einschließlich 5,0 in Schritten von 0,5 liegen. Beispiel: 0, 0,5, 1,0, ... , 5,0 (jeweils einschließlich). Die Werte werden auf die nächsten 0,5 aufgerundet. Bei einem Wert von 0,6 werden beispielsweise alle Ergebnisse mit einer Bewertung unter 1,0 ausgeschlossen.

  • priceLevels

    Sie können die Suche auf Orte beschränken, die mit bestimmten Preisstufen gekennzeichnet sind. Standardmäßig werden alle Preisstufen ausgewählt.

    Geben Sie ein Array mit einem oder mehreren der durch PriceLevel definierten Werte an.

    Beispiel:

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    Gibt an, wie die Ergebnisse in der Antwort basierend auf der Art der Suchanfrage eingestuft werden:

    • Für eine kategoriale Suchanfrage wie „Restaurants in New York City“ ist .relevance (Ergebnisse nach Suchrelevanz sortieren) die Standardeinstellung. Sie können rankPreference auf .relevance oder .distance (Ergebnisse nach Entfernung sortieren) festlegen.
    • Für eine nicht kategoriale Abfrage wie „Mountain View, CA“ empfehlen wir, rankPreference nicht zu konfigurieren.
  • regionCode

    Der zum Formatieren der Antwort verwendete Regionscode, angegeben als zweistelliger CLDR-Code. Dieser Parameter kann auch zu Verzerrungen der Suchergebnisse führen. Es gibt keinen Standardwert.

    Wenn der Ländername des Adressfelds in der Antwort mit dem Regionscode übereinstimmt, wird der Ländercode in der Adresse weggelassen.

    Die meisten CLDR-Codes entsprechen den ISO 3166-1-Codes, mit einigen Ausnahmen. So lautet beispielsweise die ccTLD des Vereinigten Königreichs „uk“ (.co.uk) und der ISO 3166-1-Code „gb“ (technisch für die Rechtspersönlichkeit „The United Kingdom of Great Britain and Northern Ireland“). Der Parameter kann sich gemäß geltendem Recht auf Ergebnisse auswirken.

Zuordnungen in der App anzeigen

Wenn Ihre App Informationen aus GMSPlacesClient anzeigt, z. B. Fotos und Rezensionen, müssen auch die erforderlichen Quellenangaben angezeigt werden.

Beispielsweise enthält das Attribut reviews des GMSPlacesClient-Objekts ein Array mit bis zu fünf GMSPlaceReview-Objekten. Jedes GMSPlaceReview-Objekt kann Attributionen und Autorenangaben enthalten. Wenn Sie die Rezension in Ihrer App einblenden, müssen auch alle Quellenangaben oder Quellenangaben des Autors enthalten sein.

Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.