Nearby Search (New)

Plattform auswählen: Android iOS JavaScript Webdienst

Bei einer „Nearby Search (New)“-Anfrage wird die zu suchende Region eingegeben angegeben als Kreis, definiert durch die Breiten- und Längengradkoordinaten des Mittelpunkts des Kreis und den Radius in Metern. Die Anfrage gibt eine Liste übereinstimmender Orte zurück, die jeweils durch einen GMSPlace -Objekt innerhalb des angegebenen Suchbereichs befindet.

Standardmäßig enthält die Antwort Orte aller Typen innerhalb des Suchbereichs. Sie können optional die Antwort filtern, indem Sie eine Liste von Ortstypen angeben, die explizit in den Antwort. Sie können z. B. festlegen, dass nur die Orte des Typs in die Antwort aufgenommen werden. „Restaurant“, „Bäckerei“ und „Café“ oder schließen Sie alle Orte des Typs „Schule“ aus.

„Nearby Search (New)“-Anfragen

Stellen Sie eine Nearby Search-Anfrage, indem Sie GMSPlacesClient searchNearbyWithRequest:, übergeben GMSPlaceSearchNearbyRequest -Objekt, das die Anfrageparameter und eine Callback-Methode des Typs definiert GMSPlaceSearchNearbyResultCallback um die Antwort zu verarbeiten.

Das Objekt GMSPlaceSearchNearbyRequest gibt alle required und optional -Parameter für die Anfrage. Zu den erforderlichen Parametern gehören:

  • Die Liste der Felder, die im GMSPlace-Objekt zurückgegeben werden sollen, auch als Feldmaske, definiert durch GMSPlaceProperty Wenn Sie nicht mindestens ein Feld in der Feldliste angeben oder der Feldliste hinzu, gibt der Aufruf einen Fehler zurück.
  • Die Standortbeschränkung, also der Kreis, der den Suchbereich definiert

In diesem Beispiel für eine Suchanfrage in der Nähe wird angegeben, dass die Antwort-GMSPlace-Objekte den Ortsnamen (GMSPlacePropertyName) und die Koordinaten des Orts enthalten (GMSPlacePropertyCoordinate) für jedes GMSPlace-Objekt in der Suche Ergebnisse. Außerdem wird die Antwort so gefiltert, dass nur Orte vom Typ „Restaurant“ zurückgegeben werden. und „Café“.

Swift

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

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500)

// Specify the fields to return in the GMSPlace object for each place in the response.
let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue}

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties)
let includedTypes = ["restaurant", "cafe"]
request.includedTypes = includedTypes

let callback: GMSPlaceSearchNearbyResultCallback = { [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().searchNearby(with: request, callback: callback)

Objective-C

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

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500);

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc]
  initWithLocationRestriction:circularLocation
              placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]];

// Set the place types to filter on.
NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ];
request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes];

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

Places Swift SDK for iOS (Vorabversion)

let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500)
let searchNearbyRequest = SearchNearbyRequest(
  locationRestriction: restriction,
  placeProperties: [ .name, .coordinate],
  includedTypes: [ .restaurant, .cafe ],
)
switch await placesClient.searchNearby(with: searchNearbyRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Nearby Search-Antworten

Die Nearby Search API gibt ein Array mit Übereinstimmungen in der Form von GMSPlace -Objekte mit einem GMSPlace-Objekt pro übereinstimmendem Ort.

Geöffnet-Status abrufen

Das GMSPlacesClient-Objekt enthält eine Mitgliederfunktion namens isOpenWithRequest (isOpenRequest in Swift und isPlaceOpenRequest in GooglePlacesSwift), die eine Antwort zurückgibt, die basierend auf der im Aufruf angegebenen Zeit angibt, ob der Ort derzeit geöffnet ist.

Diese Methode verwendet ein einzelnes Argument vom Typ GMSPlaceIsOpenWithRequest, das Folgendes enthält:

  • Ein GMSPlace-Objekt oder ein String, der eine Orts-ID angibt. Weitere Informationen zum Erstellen des „Place“-Objekts mit den erforderlichen Feldern finden Sie unter Place Details.
  • Ein optionales NSDate-Objekt (Obj-C) oder Date-Objekt (Swift), das die Uhrzeit angibt, die Sie prüfen möchten. Wenn keine Uhrzeit angegeben ist, wird die Standardeinstellung „jetzt“ verwendet.
  • Eine GMSPlaceOpenStatusResponseCallback-Methode zum Verarbeiten der Antwort.
  • &gt;

Für die Methode GMSPlaceIsOpenWithRequest müssen die folgenden Felder im Objekt GMSPlace festgelegt werden:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Wenn diese Felder nicht im Place-Objekt vorhanden sind oder Sie eine Orts-ID übergeben, werden sie mit GMSPlacesClient GMSFetchPlaceRequest: abgerufen.

isOpenWithRequest Antwort

isOpenWithRequest gibt ein GMSPlaceIsOpenResponse-Objekt mit einem booleschen Wert mit dem Namen status zurück. Dieser gibt an, ob das Unternehmen geöffnet oder geschlossen ist oder ob der Status unbekannt ist.

Sprache Wert, falls offen Wert bei Schließung Wert, falls Status unbekannt
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (Vorabversion) true false nil

Abrechnung für isOpenWithRequest

  • Die Felder GMSPlacePropertyUTCOffsetMinutes und GMSPlacePropertyBusinessStatus werden unter der SKU „Basic Data“ abgerechnet. Der Rest der Öffnungszeiten wird unter der SKU Place Details (Advanced) berechnet.
  • Wenn das GMSPlace-Objekt diese Felder bereits aus einer früheren Anfrage enthält, werden Ihnen keine weiteren Kosten in Rechnung gestellt.

Beispiel: GMSPlaceIsOpenWithRequest-Anfrage stellen

Das folgende Beispiel zeigt, wie ein GMSPlaceIsOpenWithRequest in einem vorhandenen GMSPlace-Objekt initialisiert wird.

Swift

    let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil)
      GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in
        if let error = error {
          // Handle Error
        }
        switch response.status {
          case .open:
            // Handle open
          case .closed:
            // Handle closed
          case .unknown:
            // Handle unknown
        }
      }
        

Objective-C

          GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil];
  
          [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) {
            if (error) {
              // Handle error
            }
  
            switch (response.status) {
              case GMSPlaceOpenStatusOpen:
                // Handle open
              case GMSPlaceOpenStatusClosed:
                // Handle closed
              case GMSPlaceOpenStatusUnknown:
                // Handle unknown
            }
          }];
          

GooglePlacesSwift

          let isOpenRequest = IsPlaceOpenRequest(place: place)
          switch await placesClient.isPlaceOpen(with: isOpenRequest) {
            case .success(let isOpenResponse):
              switch isOpenResponse.status {
                case true:
                  // Handle open
                case false:
                  // Handle closed
                case nil:
                  // Handle unknown
            case .failure(let placesError):
              // Handle error
          }
          

Erforderliche Parameter

Verwenden Sie das Objekt GMSPlaceSearchNearbyRequest, um die erforderlichen Parameter für der Suche.

  • Liste der Felder

    Wenn Sie Ortsdetails anfordern, müssen Sie die Daten angeben, im GMSPlace-Objekt für den Ort als Feldmaske zurückgeben. Um die Feldmaske ein Array von Werten aus GMSPlaceProperty an das GMSPlaceSearchNearbyRequest-Objekt an. Die Maskierung von Feldern ist eine gute Designpraxis, um sicherzustellen, dass Sie keine unnötigen Daten anfordern, um unnötige Verarbeitungszeiten und Gebühren zu vermeiden.

    Geben Sie eines oder mehrere der folgenden Felder an:

    • Die folgenden Felder lösen die SKU „Nearby Search (Basic)“:

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyCoordinate, GMSPlacePropertyFormattedAddress, GMSPlacePropertyName, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyPhotos, GMSPlacePropertyPlaceID, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance

    • Die folgenden Felder lösen die SKU „Nearby Search (Advanced)“:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

    • Die folgenden Felder lösen die SKU „Nearby Search (Preferred)“:

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

    Im folgenden Beispiel wird eine Liste von zwei Feldwerte , um anzugeben, dass das von einer Anfrage zurückgegebene GMSPlace-Objekt den Parameter name und placeID:

    Swift

    // Specify the place data types to return.
    let fields: [GMSPlaceProperty] = [.placeID, .name]
            

    Objective-C

    // Specify the place data types to return.
    NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
            

    Places Swift SDK for iOS (Vorabversion)

    // Specify the place data types to return.
    let fields: [PlaceProperty] = [.placeID, .displayName]
            
  • locationRestriction

    GMSPlaceLocationRestriction -Objekt, das den zu durchsuchenden Bereich als Kreis definiert, der durch einen Mittelpunkt und Radius in Metern. Der Radius muss zwischen 0,0 und 50.000,0 (einschließlich) liegen. Der Standardradius ist 0,0. Sie müssen ihn in Ihrer Anfrage auf einen Wert größer als 0,0 festlegen.

Optionale Parameter

Verwenden Sie das Objekt GMSPlaceSearchNearbyRequest, um die optionalen Parameter für der Suche.

  • eingeschlossen

    Hiermit können Sie eine Liste von Typen aus Typen angeben Tabelle A zum Filtern in den Suchergebnissen. In jeder Typeinschränkungskategorie können bis zu 50 Typen angegeben werden.

    Ein Ort kann nur einen einzigen primären Typ aus folgenden Typen haben: Tabelle A verknüpft mit . Der primäre Typ könnte beispielsweise "mexican_restaurant" oder "steak_house". Verwenden Sie includedPrimaryTypes und excludedPrimaryTypes, um die Ergebnisse zu filtern den primären Typ eines Ortes.

    Ein Ort kann auch mehrere Typwerte aus Typen haben Tabelle A die damit verknüpft sind. Beispiele für Restauranttypen: "seafood_restaurant", "restaurant", "food" "point_of_interest", "establishment". includedTypes verwenden und excludedTypes, um die Ergebnisse in der Liste der Typen zu filtern, die mit einen Ort.

    Wenn Sie einen allgemeinen primären Typ wie "restaurant" oder "hotel" enthält, kann die Antwort Orte mit einem spezifischeren primären Typ enthalten als die angegebene. Sie geben beispielsweise an, dass der primäre Typ "restaurant" Die Antwort kann dann Orte mit dem primären Typ "restaurant", aber die Antwort kann auch Orte mit einer spezifischeren primären Typ wie "chinese_restaurant" oder "seafood_restaurant".

    Wenn für eine Suche mehrere Typeinschränkungen festgelegt sind, werden nur Orte die alle Einschränkungen erfüllen, zurückgegeben. Wenn Sie beispielsweise {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, die Die zurückgegebenen Orte bieten "restaurant"-bezogene Dienstleistungen, sind aber nicht primär aktiv als "steak_house".

    includedTypes

    Eine Liste der Ortstypen aus Tabelle A, nach der gesucht werden soll. Wird dieser Parameter weggelassen, werden Orte aller Typen zurückgegeben.

    excludedTypes

    Eine Liste mit Ortstypen aus Tabelle A für den Ausschluss aus einer suchen.

    Wenn Sie sowohl den includedTypes (z. B. "school") als auch den excludedTypes (z. B. "primary_school") in der Anfrage, dann der Antwort enthält Orte, die als "school", aber nicht als "primary_school". Die Antwort enthält Orte, die mit mindestens einem der folgenden Kriterien übereinstimmen: includedTypes und keiner der excludedTypes.

    Gibt es widersprüchliche Typen, z. B. einen Typ, der in beiden includedTypes-Dateien vorkommt, und excludedTypes, wird der Fehler INVALID_REQUEST zurückgegeben.

    includedPrimaryTypes

    Eine Liste der primären Ortstypen von Einzuschließende Tabelle A bei einer Suche.

    excludedPrimaryTypes

    Eine Liste der primären Ortstypen von Auszuschließende Tabelle A über die Suche.

    Gibt es widersprüchliche Primärtypen, wie ein Typ, der in beiden includedPrimaryTypes und excludedPrimaryTypes, ein INVALID_ARGUMENT Fehler wird zurückgegeben.

  • maxResultCount

    Gibt die maximale Anzahl der Ortsergebnisse an, die zurückgegeben werden sollen. Muss zwischen folgenden Werten liegen: 1 und 20 (Standardeinstellung) einschließlich.

  • rankPreference

    Der zu verwendende Rankingtyp. Wenn Sie diesen Parameter nicht angeben, werden die Ergebnisse nach Beliebtheit sortiert. Folgende Werte sind möglich:

    • .popularity (Standardeinstellung): Sortiert die Ergebnisse nach ihrer Beliebtheit.
    • .distance Die Ergebnisse werden in aufsteigender Reihenfolge nach ihrer Entfernung vom angegebenen Ort.
  • regionCode

    Der Regionscode, der zum Formatieren der Antwort verwendet wird, angegeben als <ph type="x-smartling-placeholder"></ph> zweistelligen CLDR-Code eingeben. Es gibt keinen Standardwert.

    Wenn der Ländername des Felds formattedAddress in der Antwort mit dem regionCode wird der Ländercode bei formattedAddress weggelassen. Dieser Parameter hat keine Auswirkungen auf adrFormatAddress. Dazu gehören immer das Land Name oder auf shortFormattedAddress, wo ihn nie enthalten ist.

    Die meisten CLDR-Codes sind identisch mit ISO 3166-1-Codes, mit einigen nennenswerten Ausnahmen. Die ccTLD des Vereinigten Königreichs lautet beispielsweise „uk“ (.co.uk), während der ISO 3166-1-Code „gb“ lautet (technisch für die Rechtspersönlichkeit des Vereinigten Königreichs Großbritannien und Nordirland“). Der Parameter kann sich gemäß geltendem Recht auf Ergebnisse auswirken.

Zuordnungen in der App anzeigen

Wenn Ihre App Informationen anzeigt, die von GMSPlacesClient, wie Fotos und Rezensionen, muss die App auch die erforderlichen Quellenangaben enthalten.

Beispielsweise kann die Eigenschaft reviews des Objekts GMSPlacesClient enthält ein Array mit bis zu fünf GMSPlaceReview Objekte. Jedes GMSPlaceReview-Objekt kann Attributionen und Autorenangaben enthalten. Wenn Sie die Rezension in Ihrer App präsentieren, müssen auch Namensnennungen und Autoren angezeigt werden. Namensnennung.

Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.