Metin Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Metin arama, bir dizeye göre bir yer grubu hakkında bilgi döndürür. Örneğin, "New York'ta pizza", "Ottawa yakınlarındaki ayakkabı mağazaları" veya "123 Ana Cadde". Hizmet, metin dizesine ve ayarlanmış konum yanlılığına eşleşen yerlerin listesini döndürür.

Bu hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için kullanışlıdır. Ayrıca dizenin adres dışındaki bileşenleri, adreslerin yanı sıra işletmelerle de eşleşebilir. Belirsiz adres sorgularına örnek olarak kötü biçimlendirilmiş adresler veya işletme adları gibi adres dışı bileşenler içeren istekler verilebilir. İlk iki örnekteki gibi istekler, bir konum (ör. bölge, konum kısıtlaması veya konum yanlılığı) ayarlanmazsa sıfır sonuç döndürebilir.

"10 High Street, UK" veya "123 Main Street, US" Birleşik Krallık'ta birden fazla "High Street", ABD'de birden fazla "Main Street". Konum kısıtlaması ayarlanmadığı sürece sorgu istenen sonuçları döndürmez.
"New York'ta zincir restoran" New York'ta birden fazla "zincir restoran" konumu; açık adres veya hatta sokak adı yok.
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton US" Birleşik Krallık'taki Escher şehrinde yalnızca bir "High Street", ABD'deki Pleasanton CA şehrinde ise yalnızca bir "Main Street" vardır.
"UniqueRestaurantName New York" New York'ta bu ada sahip yalnızca bir işletme var. Ayrıştırmak için sokak adresi gerekmiyor.
"New York'ta pizza restoranları" Bu sorgu, konum kısıtlamasını içerir ve "pizza restoranları" iyi tanımlanmış bir yer türüdür. Birden fazla sonuç döndürür.
"+1 514-670-8700"

Bu sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkili yerler için birden fazla sonuç döndürür.

Metin aramayla yerlerin listesini alma

GMSPlacesClient searchByTextWithRequest: işlevini çağırarak bir metin arama isteği gönderin. Bu işlev, istek parametrelerini tanımlayan bir GMSPlaceSearchByTextRequest nesnesi ve yanıtı işlemek için GMSPlaceSearchByTextResultCallback türündeki bir geri çağırma yöntemi ile çağrılır.

GMSPlaceSearchByTextRequest nesnesi, istek için tüm zorunlu ve isteğe bağlı parametreleri belirtir. Gerekli parametreler şunlardır:

  • GMSPlaceProperty tarafından tanımlandığı üzere, GMSPlace nesnesinde döndürülecek alanların listesi (alan maskesi olarak da bilinir). Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı bir hata döndürür.
  • Metin sorgusu.

Bu örnek metin arama isteğinde, yanıt GMSPlace nesnelerinin arama sonuçlarındaki her GMSPlace nesnesinin yer adını ve yer kimliğini içerdiği belirtilmektedir. Ayrıca yanıtı, yalnızca "restoran" türündeki yerleri döndürecek şekilde filtreler.

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

iOS için Yerler Swift SDK'sı (Önizleme)

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
}

Metin arama yanıtları

Metin Arama API'si, eşleşen her yer için bir GMSPlace nesnesi içeren GMSPlace nesneleri biçiminde bir eşleşme dizisi döndürür.

Açık durumu alma

GMSPlacesClient nesnesi, çağrıda belirtilen saate göre yerin şu anda açık olup olmadığını belirten bir yanıt döndüren isOpenWithRequest adlı bir üye işlevi (Swift'te isOpenRequest ve GooglePlacesSwift'te isPlaceOpenRequest) içerir.

Bu yöntem, aşağıdakileri içeren GMSPlaceIsOpenWithRequest türündeki tek bir bağımsız değişken alır:

  • Bir GMSPlace nesnesi veya yer kimliğini belirten bir dize. Yer nesnesini gerekli alanlarla oluşturma hakkında daha fazla bilgi için Yer ayrıntıları başlıklı makaleyi inceleyin.
  • Kontrol etmek istediğiniz zamanı belirten isteğe bağlı bir NSDate (Obj-C) veya Date (Swift) nesnesi. Saat belirtilmezse varsayılan olarak şu anki saat kullanılır.
  • Yanıtı işleyen bir GMSPlaceOpenStatusResponseCallback yöntemi.
  • >

GMSPlaceIsOpenWithRequest yöntemi, GMSPlace nesnesinde aşağıdaki alanların ayarlanmasını gerektirir:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Bu alanlar Place nesnesinde sağlanmazsa veya bir yer kimliği iletiyorsanız yöntem bunları almak için GMSPlacesClient GMSFetchPlaceRequest: kullanır.

isOpenWithRequest yanıt

isOpenWithRequest, işletmenin açık, kapalı veya durumunun bilinmediğini belirten status adlı bir boole değeri içeren bir GMSPlaceIsOpenResponse nesnesi döndürür.

Dil Açıksa değer Kapalıysa değer Durum bilinmiyorsa değer
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (Önizleme) true false nil

isOpenWithRequest için faturalandırma

  • GMSPlacePropertyUTCOffsetMinutes ve GMSPlacePropertyBusinessStatus alanları, Temel Veri SKU'su kapsamında ücretlendirilir. Çalışma saatlerinin geri kalanı Yer Ayrıntıları (Gelişmiş) SKU'su kapsamında ücretlendirilir.
  • GMSPlace nesnenizde önceki bir istekten bu alanlar zaten varsa sizden tekrar ücret alınmaz.

Örnek: GMSPlaceIsOpenWithRequest isteği gönderme

Aşağıdaki örnekte, mevcut bir GMSPlace nesnesi içinde GMSPlaceIsOpenWithRequest değerinin nasıl başlatılacağı gösterilmektedir.

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
          }
          

Gerekli parametreler

Arama için gereken parametreleri belirtmek üzere GMSPlaceSearchByTextRequest nesnesini kullanın.

  • Alan listesi

    Döndürülecek yer verisi özelliklerini belirtin. Döndürülecek veri alanlarını belirten bir GMSPlace özelliği listesi gönderin. Alan maskesini atlarsanız istek hata döndürür.

    Alan listeleri, gereksiz veri istememenizi sağlamak için iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresi ve faturalandırma ücretlerinden kaçınabilirsiniz.

    Aşağıdaki alanlardan en az birini belirtin:

    • Aşağıdaki alanlar Metin Arama (Yalnızca Kimlik) SKU'sunu tetikler:

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • Aşağıdaki alanlar Metin Arama (Temel) SKU'sunu tetikler:

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • Aşağıdaki alanlar Metin Arama (Gelişmiş) SKU'sunu tetikler:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • Aşağıdaki alanlar Metin Arama (Tercih Edilen) SKU'sunu tetikler:

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

    Aramanın yapılacağı metin dizesi. Örneğin: "restoran", "123 Ana Cadde" veya "San Francisco'da gidilecek en iyi yer".

İsteğe bağlı parametreler

Arama için isteğe bağlı parametreleri belirtmek üzere GMSPlaceSearchByTextRequest nesnesini kullanın.

  • includedType

    Sonuçları, A Tablosu tarafından tanımlanan belirli türle eşleşen yerlerle sınırlandırır. Yalnızca bir tür belirtilebilir. Örneğin:

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

    true ise yalnızca sorgu gönderildiği sırada açık olan yerleri döndürür. false ise açık durumdan bağımsız olarak tüm işletmeleri döndürür. Bu parametreyi false olarak ayarlarsanız Google Haritalar veritabanında çalışma saatlerini belirtmeyen yerler döndürülür.

  • isStrictTypeFiltering

    includeType parametresiyle kullanılır. true olarak ayarlandığında, yalnızca includeType ile belirtilen türlerle eşleşen yerler döndürülür. Yanlış olduğunda (varsayılan), yanıt belirtilen türlerle eşleşmeyen yerler içerebilir.

  • locationBias

    Arama yapılacak bir alanı belirtir. Bu konum, bir önyargı görevi görür. Bu, belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir.

    locationRestriction veya locationBias ikilisinden birini belirtebilirsiniz; ikisini birden belirtmeyin. locationRestriction'ü, sonuçların içinde olması gereken bölgeyi belirtmek, locationBias'ü ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.

    Bölgeyi dikdörtgen bir görüntü alanı veya daire olarak belirtin.

    • Daireler, merkez noktası ve yarıçapı (metre cinsinden) ile tanımlanır. Yarıçap, 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan yarıçap 0,0'dır. Örneğin:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
    • Dikdörtgen, iki çapraz karşıt düşük ve yüksek nokta olarak temsil edilen bir enlem-boylam görüntü alanıdır. Düşük nokta, dikdörtgenin güney batı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini gösterir.

      Görüntü alanı kapalı bir bölge olarak kabul edilir. Enlem sınırları -90 ile 90 derece arasında, boylam sınırları ise -180 ile 180 derece arasında olmalıdır:

      • low = high ise görüntü alanı bu tek noktadan oluşur.
      • low.longitude > high.longitude ise boylam aralığı tersine çevrilir (görüntü alanı 180 derece boylam çizgisini aşar).
      • low.longitude = -180 derece ve high.longitude = 180 derece ise görüntü alanı tüm boylamları içerir.
      • low.longitude = 180 derece ve high.longitude = -180 derece ise boylam aralığı boş olur.
      • low.latitude > high.latitude ise enlem aralığı boş olur.
  • locationRestriction

    Arama yapılacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen bir görüntü alanı olarak belirtin. Görüntü alanını tanımlama hakkında bilgi edinmek için locationBias açıklamasına bakın.

    locationRestriction veya locationBias ikilisinden birini belirtebilirsiniz; ikisini birden belirtmeyin. locationRestriction'ü, sonuçların içinde olması gereken bölgeyi belirtmek, locationBias'ü ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.

  • maxResultCount

    Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 (varsayılan) arasında olmalıdır.

  • minRating

    Sonuçları yalnızca ortalama kullanıcı puanı bu sınırdan yüksek veya bu sınıra eşit olanlarla kısıtlar. Değerler 0,0 ile 5,0 (başlangıç ve bitiş değerleri dahil) arasında, 0,5'lik artışlarla olmalıdır. Örneğin: 0, 0,5, 1,0, ..., 5,0 dahil. Değerler en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri, puanı 1,0'dan düşük olan tüm sonuçları ortadan kaldırır.

  • priceLevels

    Aramayı belirli fiyat seviyelerinde işaretlenmiş yerlerle sınırlayın. Varsayılan olarak tüm fiyat seviyeleri seçilidir.

    PriceLevel ile tanımlanan bir veya daha fazla değer dizisi belirtin.

    Örneğin:

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

    Sorgu türüne göre sonuçların yanıtta nasıl sıralandığını belirtir:

    • "New York'taki restoranlar" gibi kategorik bir sorgu için varsayılan değer .relevance'tür (sonuçları arama alaka düzeyine göre sırala). rankPreference değerini .relevance veya .distance olarak ayarlayabilirsiniz (sonuçları mesafeye göre sıralar).
    • "Mountain View, CA" gibi kategorik olmayan bir sorgu için rankPreference değerini ayarlamamanızı öneririz.
  • regionCode

    Yanıtı biçimlendirmek için kullanılan bölge kodu. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametre, arama sonuçlarında da önyargı etkisi yaratabilir. Varsayılan değer yoktur.

    Yanıttaki adres alanının ülke adı bölge koduyla eşleşirse ülke kodu adresten çıkarılır.

    CLDR kodlarının çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk) iken ISO 3166-1 kodu "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için). Parametre, geçerli yasaya göre sonuçları etkileyebilir.

Uygulamanızda ilişkilendirmeleri gösterme

Uygulamanız, GMSPlacesClient'dan alınan fotoğraf ve yorumlar gibi bilgileri görüntülerken gerekli ilişkilendirmeleri de göstermelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği beş adede kadar GMSPlaceReview nesnesi içeren bir dizi içerir. Her GMSPlaceReview nesnesi ilişkilendirmeler ve yazar ilişkilendirmeleri içerebilir. Yorumu uygulamanızda gösteriyorsanız ilişkilendirmeyi veya yazar ilişkilendirmesini de göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler hakkındaki dokümanları inceleyin.