Ricerca testo (Novità)

Seleziona la piattaforma: Android iOS JavaScript Servizio web

Una ricerca testuale restituisce informazioni su un insieme di luoghi. in base a una stringa. Ad esempio, "pizza a Roma", "negozi di scarpe vicino a Ottawa" o "123 Main Street". Il servizio risponde con un elenco di luoghi corrispondenti alla stringa di testo e a eventuali bias di località impostati.

Il servizio è particolarmente utile per creare indirizzi ambigui query in un sistema automatico, e gli altri componenti della stringa potrebbero corrispondere alle attività commerciali e indirizzi IP esterni. Esempi di query di indirizzi ambigui sono gli indirizzi con formattazione scadente o richieste che includono componenti diversi dall'indirizzo, come i nomi delle attività commerciali. Le richieste come i primi due esempi potrebbero restituire zero risultati, a meno che non sia impostata una località (ad esempio regione, limitazione della località o bias di località).

"Via Roma 10, Italia" o "123 Main Street, US" Più "High Street" nel Regno Unito; più "Main Street" negli Stati Uniti. La query non restituisce risultati desiderabili a meno che non venga applicata una restrizione di località per iniziare.
"Catena di ristoranti New York" Più "Catena di ristoranti" sedi a New York; nessun indirizzo oppure e persino il nome della via.
"10 High Street, Escher Regno Unito" o "123 Main Street, Pleasanton US" Solo una "High Street" nella città di Escher nel Regno Unito; solo una "Main Street" nella città di Pleasanton in California, Stati Uniti.
"UniqueRestaurantName New York" Solo una struttura con questo nome a New York; nessuna via necessari per differenziare.
"pizzerie a Roma" Questa query contiene la relativa limitazione di località e "pizzerie" sono un tipo di luogo ben definito. Restituisce più risultati.
"+1 514-670-8700"

Questa query contiene un numero di telefono. Restituisce più risultati per i luoghi associati a quel numero di telefono.

Visualizza un elenco di luoghi tramite la ricerca testuale

Effettua una richiesta di ricerca testuale chiamando il numero GMSPlacesClient searchByTextWithRequest:. passando un GMSPlaceSearchByTextRequest che definisce i parametri della richiesta e un metodo di callback, di tipo GMSPlaceSearchByTextResultCallback, per gestire la risposta.

L'oggetto GMSPlaceSearchByTextRequest specifica tutti gli Parametri obbligatori e facoltativi per la richiesta. I parametri obbligatori includono:

  • L'elenco dei campi da restituire nell'oggetto GMSPlace, chiamata maschera del campo, come definita GMSPlaceProperty. Se non specifichi almeno un campo nell'elenco dei campi o se ometti all'elenco dei campi, la chiamata restituisce un errore.
  • La query di testo.

Questa richiesta di ricerca testuale di esempio specifica che la risposta GMSPlace oggetti Contenere il nome e l'ID del luogo per ogni oggetto GMSPlace nella ricerca che consentono di analizzare i dati e visualizzare i risultati. Inoltre, filtra la risposta in modo da restituire solo luoghi di tipo "ristorante".

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;
      }
    }
  }
];

SDK Places Swift per iOS (anteprima)

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
}

Risposte alla ricerca di testo

L'API Text Search restituisce un array di corrispondenze nei forma di GMSPlace di oggetti, con un oggetto GMSPlace per luogo corrispondente.

Ottieni stato di apertura

L'oggetto GMSPlacesClient contiene una funzione membro denominata isOpenWithRequest (isOpenRequest in Swift e isPlaceOpenRequest in GooglePlacesSwift) che restituisce una risposta che indica se il luogo è attualmente aperto, in base all'orario specificato nella chiamata.

Questo metodo prende un singolo argomento di tipo GMSPlaceIsOpenWithRequest che contiene:

  • Un oggetto GMSPlace o una stringa che specifica un ID luogo. Per ulteriori informazioni sulla creazione dell'oggetto Place con i campi necessari, consulta Dettagli dei luoghi.
  • Un oggetto facoltativo NSDate (Obj-C) o Date (Swift) che specifica l'ora da controllare. Se non viene specificata alcuna ora, il valore predefinito è ora.
  • Un metodo GMSPlaceOpenStatusResponseCallback per gestire la risposta.
  • &gt;
di Gemini Advanced.

Il metodo GMSPlaceIsOpenWithRequest richiede l'impostazione dei seguenti campi nell'oggetto GMSPlace:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Se questi campi non vengono forniti nell'oggetto Place o se passi un ID luogo, il metodo utilizza GMSPlacesClient GMSFetchPlaceRequest: per recuperarli.

isOpenWithRequest risposta

isOpenWithRequest restituisce un oggetto GMSPlaceIsOpenResponse contenente un valore booleano denominato status che indica se l'attività è aperta, chiusa o se lo stato è sconosciuto.

Lingua Valore se aperto Valore se chiuso Valore se lo stato è sconosciuto
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (anteprima) true false nil

Fatturazione per isOpenWithRequest

  • I campi GMSPlacePropertyUTCOffsetMinutes e GMSPlacePropertyBusinessStatus vengono addebitati in base allo SKU di base dei dati. Il resto dell'orario di apertura viene addebitato mediante lo SKU Place Details (Advanced).
  • Se l'oggetto GMSPlace presenta già questi campi di una richiesta precedente, non ti verrà addebitato alcun costo.

Esempio: effettua una richiesta GMSPlaceIsOpenWithRequest

L'esempio seguente mostra come inizializzare GMSPlaceIsOpenWithRequest all'interno di un oggetto GMSPlace esistente.

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
          }
          

Parametri obbligatori

Utilizza l'oggetto GMSPlaceSearchByTextRequest per specificare l'oggetto parametri per la ricerca.

  • Elenco campi

    Specifica le proprietà dei dati dei luoghi da restituire. Trasmettere un elenco di GMSPlace specifiche dei campi di dati da restituire. Se ometti il campo , la richiesta restituirà un errore.

    Gli elenchi di campi sono una buona prassi di progettazione per garantire di dati non necessari, così da evitare tempi di elaborazione non necessari addebiti di fatturazione.

    Specifica uno o più dei seguenti campi:

    • I seguenti campi attivano lo SKU Ricerca testuale (solo ID):

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • I seguenti campi attivano lo SKU Ricerca di testo (di base):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • I seguenti campi attivano lo SKU Ricerca testuale (avanzata):

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • I seguenti campi attivano lo SKU Ricerca testuale (preferito):

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

    La stringa di testo su cui eseguire la ricerca, ad esempio: "ristorante", "123 principale". Street" o "luogo migliore da visitare a San Francisco".

Parametri facoltativi

Utilizza l'oggetto GMSPlaceSearchByTextRequest per specificare l'oggetto facoltativo parametri per la ricerca.

  • includedType

    Limita i risultati alle posizioni corrispondenti al tipo specificato definito da Tabella A. È possibile specificare un solo tipo. Ad esempio:

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

    Se true, restituisce solo i luoghi aperti. nel momento in cui la query viene inviata. Se false, restituisci tutte le attività indipendentemente dallo stato aperto. I luoghi che non specificano l'orario di apertura nel database di Google Places vengono riportati se imposti questo parametro su false.

  • isStrictTypeFiltering

    Utilizzato con il parametro includeType. Se impostato su true, solo le località che corrispondono ai tipi specificati specificati da Vengono restituiti includeType. Se il valore è false, il valore predefinito è la risposta che può contenere luoghi che non corrispondono dei tipi specificati.

  • locationBias

    Specifica un'area in cui eseguire la ricerca. Questa località funge da bias, che significa è possibile restituire risultati relativi alla località specificata, inclusi i risultati al di fuori dell'area specificata.

    Puoi specificare locationRestriction o locationBias, ma non entrambi. Considera locationRestriction come una specifica regione in cui devono essere contenuti i risultati e locationBias come che specifica la regione alla quale i risultati devono essere vicini, ma che possono essere al di fuori della zona.

    Specifica la regione come area visibile rettangolare o come cerchio.

    • Un cerchio viene definito dal centro e dal raggio in metri. Il raggio deve essere compreso tra 0,0 e 50000,0 inclusi. Il raggio predefinito è 0,0. Ad esempio:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
    • Un rettangolo è un'area visibile di latitudine e longitudine, rappresentata da due diagonalmente opposte ai punti bassi e alti. Il punto più basso indica il sud-ovest angolo del rettangolo e il punto più alto rappresenta il nord-est angolo del rettangolo.

      Un'area visibile è considerata un regione chiusa, ovvero include il confine. I limiti di latitudine devono essere compresi tra -90 e 90 gradi inclusi, mentre i limiti di longitudine devono essere compresi tra -180 e 180 gradi inclusi:

      • Se low = high, l'area visibile è composta da quel singolo punto.
      • Se low.longitude > high.longitude, l'intervallo di longitudine è invertito (l'area visibile attraversa i 180 gradi longitudine).
      • Se low.longitude = -180 gradi e high.longitude = 180 gradi, l'area visibile include tutti longitudini.
      • Se low.longitude = 180 gradi e high.longitude = -180 gradi, l'intervallo di longitudine è vuoto.
      • Se low.latitude > high.latitude, l'intervallo di latitudine è vuoto.
  • locationRestriction

    Specifica un'area in cui eseguire la ricerca. I risultati al di fuori dell'area specificata non sono restituito. Specifica la regione come un'area visibile rettangolare. Leggi la descrizione di locationBias per informazioni sulla definizione dell'area visibile.

    Puoi specificare locationRestriction o locationBias, ma non entrambi. Considera locationRestriction come una specifica regione in cui devono essere contenuti i risultati e locationBias come che specifica la regione alla quale i risultati devono essere vicini, ma che possono essere al di fuori della zona.

  • maxResultCount

    Specifica il numero massimo di risultati relativi ai luoghi da restituire. Il valore deve essere compreso tra 1 e 20 (valore predefinito) inclusi.

  • minRating

    Limita i risultati solo agli utenti con valutazione media degli utenti superiore a o uguale a questo limite. I valori devono essere compresi tra 0,0 e 5,0 (incluso) in di 0,5. Ad esempio: 0, 0,5, 1,0, ... , 5,0 inclusi. I valori sono arrotondato per eccesso al valore più vicino a 0,5. Ad esempio, un valore pari a 0,6 elimina tutti con una valutazione inferiore a 1,0.

  • priceLevels

    Limita la ricerca ai luoghi contrassegnati da determinati livelli di prezzo. Per impostazione predefinita, vengono selezionati tutti i livelli di prezzo.

    Specifica un array di uno o più valori definiti da PriceLevel.

    Ad esempio:

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

    Specifica il modo in cui i risultati vengono classificati nella risposta in base al tipo di query:

    • Per una query categorica come "Ristoranti a New York", .relevance (classifica i risultati in base alla pertinenza della ricerca) è l'impostazione predefinita. Puoi impostare rankPreference su .relevance oppure .distance (ranking dei risultati in base alla distanza).
    • Per una query non categorica come "Mountain View, CA", ti consigliamo di lasciare rankPreference non impostato.
  • regionCode

    Il codice regione utilizzato per formattare la risposta, specificato come codice CLDR a due caratteri. Questo parametro può anche avere un effetto di bias sui risultati di ricerca. Non esiste un valore predefinito.

    Se il nome del paese nel campo dell'indirizzo nella risposta corrisponde alla il prefisso, il codice del paese viene omesso dall'indirizzo.

    La maggior parte dei codici CLDR è identica ai codici ISO 3166-1, con alcune degne di nota. Ad esempio, il ccTLD del Regno Unito è "uk" (.co.uk) mentre il codice ISO 3166-1 è "gb" (tecnicamente per persona giuridica del "Regno Unito di Gran Bretagna e Irlanda del Nord"). Il parametro può influire sui risultati in base alla legge vigente.

Attribuzioni display nell'app

Quando la tua app mostra informazioni ottenute da GMSPlacesClient, come foto e recensioni, nell'app devono essere mostrate anche le attribuzioni richieste.

Ad esempio, la proprietà reviews dell'oggetto GMSPlacesClient contiene un array di cinque GMSPlaceReview: di oggetti strutturati. Ogni oggetto GMSPlaceReview può contenere attribuzioni e attribuzioni dell'autore. Se mostri la recensione nell'app, devi mostrare anche eventuali attribuzioni o autori l'attribuzione dei contenuti.

Per ulteriori informazioni, consulta la documentazione su attribuzioni.