Metin Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Metin Arama, bir dizeye göre bir dizi yer hakkında bilgi döndürür. Örneğin, "New York'ta pizza", "Ankara yakınlarındaki ayakkabı mağazaları" veya "123 Ana Cadde". Hizmet, metin dizesiyle ve ayarlanan konum önyargısıyla eşleşen yerlerin listesini döndürür.

Bu hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları oluşturmak için kullanışlıdır. Dizenin adres olmayan bileşenleri, işletmelerle ve adreslerle 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 önyargısı) ayarlanmadığı sürece 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". Sorgu, konum kısıtlaması ayarlanmadığı sürece istenen sonuçları döndürmüyor.
"New York'taki zincir restoranlar" New York'ta birden fazla "Zincir restoran" konumu var. Sokak adresi veya sokak adı bile 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 yalnızca bir "Main Street" vardır.
"UniqueRestaurantName New York" New York'ta bu ada sahip tek bir kuruluş var. Ayırt etmek için sokak adresi gerekmiyor.
"New York'taki pizzacılar" Bu sorgu, konum kısıtlaması içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türü. Birden fazla sonuç döndürür.
"+1 514-670-8700"

Bu sorguda telefon numarası var. Bu numara, telefon numarasıyla ilişkili yerler için birden fazla sonuç döndürür.

Metin aramasıyla yerlerin listesini alma

GMSPlacesClient searchByTextWithRequest: işlevini çağırarak, istek parametrelerini ve yanıtı işlemek için GMSPlaceSearchByTextResultCallback türünde bir geri çağırma yöntemini tanımlayan bir GMSPlaceSearchByTextRequest nesnesi ileterek bir Text Search isteği gönderin.

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

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

Bu örnek metin arama isteği, yanıttaki GMSPlace nesnelerinin, arama sonuçlarındaki her GMSPlace nesnesi için yer adı ve yer kimliği içermesini belirtir. Ayrıca yanıtı filtreleyerek yalnızca "restoran" türündeki yerleri döndürür.

Places Swift SDK'sı

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
}

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

Metin Arama yanıtları

Text Search API, eşleşen her yer için bir GMSPlace nesnesi olacak şekilde GMSPlace nesneleri biçiminde bir eşleşme dizisi döndürür.

Açık durumunu alma

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

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

  • Bir GMSPlace nesnesi veya bir yer kimliği belirten dize. Gerekli alanlarla yer nesnesi 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. Herhangi bir saat belirtilmezse varsayılan olarak "şimdi" değeri kullanılır.
  • Yanıtı işlemek için GMSPlaceOpenStatusResponseCallback yöntemi.
  • >

GMSPlaceIsOpenWithRequest yöntemi için GMSPlace nesnesinde aşağıdaki alanların ayarlanması gerekir:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

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

isOpenWithRequest yanıt

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

Dil Açık tutar Kapalıyken değer Durum bilinmiyorsa değer
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

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ı Enterprise SKU'su kapsamında ücretlendirilir.
  • GMSPlace nesnenizde önceki bir istekten gelen bu alanlar zaten varsa tekrar ücretlendirilmezsiniz.

Örnek: GMSPlaceIsOpenWithRequest isteğinde bulunma

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

Places Swift SDK'sı

        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
        }
        

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

Gerekli parametreler

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

  • Alan listesi

    Hangi yer verisi özelliklerinin döndürüleceğini belirtin. Dönd��rülecek veri alanlarını belirten GMSPlace özelliklerinin listesini iletin. Alan maskesini atlarsanız istek hata döndürür.

    Alan listeleri, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresi ve faturalandırma ücretlerinden kaçınabilirsiniz.

    Aşağıdaki alanlardan birini veya daha fazlasını belirtin:

    • Aşağıdaki alanlar Text Search Essentials ID Only SKU'yu (Yalnızca Kimlikli Metin Arama Essentials SKU'su) tetikler:

      GMSPlacePropertyPlaceID
    • Aşağıdaki alanlar Text Search Pro SKU'sunu tetikler:

      GMSPlacePropertyAddressComponents
      GMSPlacePropertyBusinessStatus
      GMSPlacePropertyCoordinate
      GMSPlacePropertyFormattedAddress
      GMSPlacePropertyIconBackgroundColor
      GMSPlacePropertyIconImageURL
      GMSPlacePropertyName
      GMSPlacePropertyPhotos
      GMSPlacePropertyPlusCode
      GMSPlacePropertyTypes
      GMSPlacePropertyUTCOffsetMinutes
      GMSPlacePropertyViewport
      GMSPlacePropertyWheelchairAccessibleEntrance
    • Aşağıdaki alanlar Text Search Enterprise SKU'sunu tetikler:

      GMSPlacePropertyCurrentOpeningHours
      GMSPlacePropertySecondaryOpeningHours
      GMSPlacePropertyPhoneNumber
      GMSPlacePropertyPriceLevel
      GMSPlacePropertyRating
      GMSPlacePropertyOpeningHours
      GMSPlacePropertyUserRatingsTotal
      GMSPlacePropertyWebsite
    • Aşağıdaki alanlar Text Search Enterprise Plus SKU'sunu tetikler:

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

    Aranacak metin dizesi (ör. "restoran", "123 Main Street" veya "San Francisco'da ziyaret edilebilecek 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'nda tanımlanan belirtilen türle eşleşen yerlerle sınırlar. Yalnızca bir tür belirtilebilir. Örneğin:

    • let request = SearchByTextRequest()
      request.includedType = "bar"
    • let request = SearchByTextRequest()
      request.includedType = "pharmacy"
  • isOpenNow

    true ise yalnızca sorgu gönderildiğinde açık olan yerleri döndürün. false ise açık durumundan bağımsız olarak tüm işletmeleri döndürür. Google Yerler veritabanında çalışma saatleri belirtilmeyen yerler, bu parametreyi false olarak ayarlarsanız döndürülür.

  • isStrictTypeFiltering

    includeType parametresiyle birlikte kullanılır. true olarak ayarlandığında yalnızca includeType tarafından belirtilen türlerle eşleşen yerler döndürülür. Varsayılan değer olan "yanlış" olduğunda yanıtta, belirtilen türlerle eşleşmeyen yerler olabilir.

  • locationBias

    Arama yapılacak bir alanı belirtir. Bu konum, bir önyargı olarak işlev görür. Bu nedenle, belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumla ilgili sonuçlar döndürülebilir.

    locationRestriction veya locationBias değerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz. locationRestriction, sonuçların içinde olması gereken bölgeyi, locationBias ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtir.

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

    • Bir daire, merkez noktası ve metre cinsinden yarıçap 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:

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

      Görüntü alanı, sınırını da içeren kapalı bir bölge olarak kabul edilir. Enlem sınırları -90 ile 90 derece arasında (bu değerler dahil), boylam sınırları ise -180 ile 180 derece arasında (bu değerler dahil) olmalıdır:

      • low = high ise görüntü alanı tek bir noktadan oluşur.
      • low.longitude > high.longitude ise boylam aralığı ters çevrilir (görüntü alanı 180 derece boylam çizgisini geçer).
      • 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ını inceleyin.

    locationRestriction veya locationBias değerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz. locationRestriction, sonuçların içinde olması gereken bölgeyi, locationBias ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtir.

  • maxResultCount

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

  • 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,5 artışlarla 0,0 ile 5,0 (başlangıç ve bitiş değerleri dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 (5,0 dahil). Değerler en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük puanlı 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çilir.

    PriceLevel tarafından tanımlanan bir veya daha fazla değerden oluşan bir dizi belirtin.

    Örneğin:

        let request = SearchByTextRequest()
        request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    Sonuçların, sorgu türüne göre yanıttaki sıralamasını belirtir:

    • "New York'taki restoranlar" gibi kategorik bir sorgu için varsayılan olarak .relevance (sonuçları arama alaka düzeyine göre sırala) kullanılır. rankPreference seçeneğini .relevance veya .distance (sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz.
    • "Mountain View, CA" gibi kategorik olmayan bir sorgu için rankPreference ayarını yapmamanızı öneririz.
  • regionCode

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

    Yanıtın adres alanındaki ülke adı, bölge koduyla eşleşiyorsa ülke kodu adresten çıkarılır.

    Bazı önemli istisnalar dışında çoğu CLDR kodu, 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.

  • shouldIncludePureServiceAreaBusinesses

    true ise arama sonuçlarında yalnızca hizmet alanı işletmeleri döndürülür. Salt hizmet bölgesi işletmesi, müşterileri doğrudan ziyaret eden veya onlara teslimat yapan ancak işletme adresinde müşterilere hizmet vermeyen işletmelerdir.

    Örneğin:

    Places Swift SDK'sı

    let request = SearchByTextRequest()
    request.shouldIncludePureServiceAreaBusinesses = true

    Swift

    let request = SearchByTextRequest()
    request.shouldIncludePureServiceAreaBusinesses: true

    Objective-C

    GMSPlaceSearchByTextRequest *request =
        [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyAll]];
    request.shouldIncludePureServiceAreaBusinesses = YES;

Uygulamanızda ilişkilendirmeleri gösterme

Uygulamanız GMSPlacesClient'dan alınan bilgileri (ör. fotoğraflar ve yorumlar) gösterdiğinde gerekli atıfları da göstermelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği, en fazla beş GMSPlaceReview nesnesi dizisi içerir. Her GMSPlaceReview nesnesi, atıflar ve yazar atıfları içerebilir. Yorumu uygulamanızda gösteriyorsanız ilişkilendirme veya yazar ilişkilendirmesini de göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler hakkındaki belgelere göz atın.