Metin Arama (Yeni)

Metin Arama, bir dizeye dayalı olarak bir yer grubuyla ilgili bilgileri döndürür. Örneğin, "İstanbul'da pizza", "İzmir yakınındaki ayakkabı mağazaları" veya "Ana Cadde No: 123". Hizmet, metin dizesiyle ve ayarlanan konum önyargısıyla eşleşen yerlerin bir listesiyle yanıt verir.

Hizmet özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerin yanı sıra adreslerin de eşleşmesini sağlayabilir. Belirsiz adres sorgularına örnek olarak, kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenler içeren istekler verilebilir. İlk iki örnek gibi istekler, bir konum (bölge, konum kısıtlaması veya konum yanlılığı gibi) ayarlanmadığı sürece sıfır sonuç döndürebilir.

"10 High Street, UK" veya "123 Main Street, ABD" Birleşik Krallık'ta birden fazla "Ana Cadde", ABD'de birden fazla "Ana Cadde". Bir konum kısıtlaması ayarlanmadığı sürece sorgu, istenen sonuçları döndürmez.
"İstanbul'da restoran zinciri" New York'ta birden fazla "restoran zinciri" konumu; açık adres, hatta sokak adı yok.
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton Türkiye" Birleşik Krallık'ın Escher şehrinde sadece bir "High Street"; ABD'nin Pleasanton CA şehrinde sadece bir "Main Street"tir.
"Benzersiz RestoranAdı İstanbul" New York'ta bu ada sahip yalnızca bir işletme var; ayırt etmek için açık adres gerekmez.
"İstanbul'daki pizza restoranları" 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 sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkilendirilmiş yerler için birden fazla sonuç döndürür.

Metin arama ile yer listesini alın

GMSPlacesClient searchByTextWithRequest: yöntemini çağırarak, yanıtı işlemek için istek parametrelerini tanımlayan bir GMSPlaceSearchByTextRequest nesnesi ve GMSPlaceSearchByTextResultCallback türündeki bir geri çağırma yöntemini ileterek Metin Arama isteğinde bulunun.

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

  • GMSPlaceProperty ile tanımlandığı şekilde alan maskesi olarak da adlandırılan GMSPlace nesnesinde döndürülecek alanların listesi. 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ği, yanıt GMSPlace nesnelerinin, arama sonuçlarındaki her bir GMSPlace nesnesi için yer adını ve yer kimliğini içerdiğini belirtir. Ayrıca yanıtı yalnızca "restoran" türündeki yerleri döndürecek şekilde filtreler.

Swift

// Create the GMSPlaceSearchByTextRequest object.
let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID];
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
request.locationRestriction = GMSPlaceRectangularLocationOption(
      CLLocationCoordinate2D(latitude: 20, longitude: 30),
      CLLocationCoordinate2D(latitude: 40, longitude: 50)
)

// Array to hold the places in the response
placeResults = [];

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
  }
  self.placeResults = results
}

GMSPlacesClient.shared().searchByTextWithRequest(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.locationRestriction = GMSPlaceRectangularLocationOption(
    CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.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 (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
}

Metin Arama yanıtları

Text Search API, eşleşen yer başına bir GMSPlace nesnesi olmak üzere GMSPlace nesneleri biçiminde bir eşleşme dizisi döndürür.

Yanıttaki GMSPlace nesnesi, veri alanlarıyla birlikte şu üye işlevlerini de içerir:

  • isOpen bir yerin belirli bir zamanda açık olup olmadığını hesaplar.
  • isOpenAtDate, bir yerin belirli bir tarihte açık olup olmadığını hesaplar.

Gerekli parametreler

Arama için gerekli 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 GMSPlace özelliklerinin listesini iletin. Alan maskesini çıkarırsanız istek bir hata döndürür.

    Alan listeleri, gereksiz veri isteğinde bulunmadığınızdan emin olmak için iyi bir tasarım uygulamasıdır. Bu da gereksiz işlem süresi ve faturalandırma ücretlerinin önlenmesine yardımcı olur.

    Aşağıdaki alanlardan birini veya daha fazlasını 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

    Aranacak metin dizesi, örneğin: "restoran", "Ana Cadde 123" veya "İstanbul'da ziyaret edilecek en iyi yer".

İsteğe bağlı parametreler

Aramayla ilgili isteğe bağlı parametreleri belirtmek için GMSPlaceSearchByTextRequest nesnesini kullanın.

  • includedType

    Sonuçları, Tablo A tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar. Yalnızca bir tür belirtilebilir. Örneğin:

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

    true ise yalnızca sorgunun gönderildiği sırada açık olan yerleri döndürün. false ise açık durumundan bağımsız olarak tüm işletmeleri döndürün. Bu parametreyi false olarak ayarlarsanız Google Rehber 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 tarafından belirtilen türlerle eşleşen yerler döndürülür. False (yanlış) değerine ayarlandığında varsayılan yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.

  • locationBias

    Aranacak alanı belirtir. Bu konum bir sapma görevi görür. Bu da belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun etrafındaki sonuçların döndürülebileceği anlamına gelir.

    locationRestriction veya locationBias belirtebilirsiniz ancak ikisini birden belirtemezsiniz. locationRestriction öğesini, sonuçların içinde olması gereken bölgeyi belirtmek, locationBias öğesini ise sonuçların yakınında olması gereken ancak bölgenin dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.

    Bölgeyi dikdörtgen görünüm veya daire olarak belirtin.

    • Bir daire, merkez noktası ve metre cinsinden yarıçapla tanımlanır. Yarıçap, 0,0 ile 50.000,0 (her ikisi de dahil) arasında olmalıdır. Varsayılan yarıçap 0,0'dır. Örneğin:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
      
    • Dikdörtgen, çapraz olarak zıt yönde iki düşük ve yüksek noktayla temsil edilen, enlem-boylam görüntü alanıdır. Alçak nokta, dikdörtgenin güneybatı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini temsil eder.

      Görüntü alanı, kapalı bölge olarak kabul edilir. Yani kendi sınırlarını içerir. Enlem sınırları -90 ile 90 derece (dahil) arasında, boylam sınırları ise -180 ila 180 derece (her ikisi de dahil) arasında olmalıdır:

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

    Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen görünüm alanı olarak belirtin. Viewport'u tanımlama hakkında bilgi edinmek için locationBias açıklamasına bakın.

    locationRestriction veya locationBias belirtebilirsiniz ancak ikisini birden belirtemezsiniz. locationRestriction öğesini, sonuçların içinde olması gereken bölgeyi belirtmek, locationBias öğesini ise sonuçların yakınında olması gereken ancak bölgenin dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.

  • maxResultCount

    Döndürülecek maksimum yer sonucu sayısını belirtir. 1-20 (varsayılan) dahil bu değerler 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,5’lik artışlarla 0,0 ile 5,0 (dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil bu sayılar. Değerler, en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük olan tüm sonuçları eler.

  • priceLevels

    Aramayı belirli fiyat düzeylerinde işaretlenmiş yerlerle sınırlandırın. Varsayılan olarak tüm fiyat düzeyleri seçilir.

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

    Örneğin:

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

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

    • "İstanbul'daki restoranlar" gibi bir kategorik sorgu için varsayılan değer .relevance (sonuçları arama alaka düzeyine göre sırala)dır. rankPreference değerini .relevance veya .distance (sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz.
    • "Mountain View, CA" gibi kategorik olmayan bir sorgu için rankPreference politikasını ayarlamadan bırakmanızı öneririz.
  • regionCode

    Yanıtı biçimlendirmek için kullanılan bölge kodu. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametrenin arama sonuçları üzerinde yanlılık etkisi de olabilir. Varsayılan bir değer yok.

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

    CLDR kodları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), ISO 3166-1 kodu "gb" (teknik olarak "Büyük Britanya ve Kuzey İrlanda'daki Birleşik Krallık'a" ait tüzel kişi için) "gb" şeklindedir. Parametre, geçerli yasalara göre sonuçları etkileyebilir.

İlişkilendirmeleri uygulamanızda gösterme

Uygulamanız, GMSPlacesClient'ten elde edilen bilgileri (ör. fotoğraflar ve yorumlar) görüntülediğinde gerekli atıfları da göstermelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği, en fazla beş GMSPlaceReview nesnesinden oluşan bir dizi içeriyor. Her GMSPlaceReview nesnesi atıflar ve yazar atıfları içerebilir. Yorumu uygulamanızda gösteriyorsanız atıf veya yazar atfını da göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler hakkındaki belgeleri inceleyin.