Yakındaki Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Yakındaki Arama (Yeni) isteği, çember olarak belirtilen arama yapılacak bölgeyi girdi olarak alır. Bu bölge, dairenin merkez noktasının enlem ve boylam koordinatları ve metre cinsinden yarıçapı ile tanımlanır. İstek, belirtilen arama alanındaki her biri bir GMSPlace nesnesiyle temsil edilen eşleşen yerlerin listesini döndürür.

Varsayılan olarak yanıt, arama alanındaki her türden yeri içerir. İsteğe bağlı olarak, yanıta açıkça dahil edilecek veya yanıttan hariç tutulacak yer türlerinin listesini belirterek yanıtı filtreleyebilirsiniz. Örneğin, yanıta yalnızca "restoran", "pastane" ve "kafe" türündeki yerleri dahil etmeyi veya "okul" türündeki tüm yerleri hariç tutmayı belirtebilirsiniz.

Yakındaki Arama (Yeni) istekleri

Yanıtı işlemek için GMSPlacesClient searchNearbyWithRequest: yöntemini çağırıp istek parametrelerini tanımlayan bir GMSPlaceSearchNearbyRequest nesnesini ve GMSPlaceSearchNearbyResultCallback türünde bir geri çağırma yöntemini ileterek Yakındakilerle Arama isteği oluşturun.

GMSPlaceSearchNearbyRequest nesnesi, istek için tüm gerekli 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 çıkarırsanız çağrı bir hata döndürür.
  • Arama alanını tanımlayan çember anlamına gelen konum kısıtlaması.

Bu örnek yakındaki arama isteği, yanıt GMSPlace nesnelerinin arama sonuçlarındaki her bir GMSPlace nesnesi için yer adını (GMSPlacePropertyName) ve yer koordinatlarını (GMSPlacePropertyCoordinate) içerdiğini belirtir. Ayrıca, yanıtı yalnızca "restoran" ve "kafe" türündeki yerleri döndürecek şekilde filtreler.

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

GooglePlacesSwift

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
}

Yakındaki Arama yanıtları

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

Yanıttaki GMSPlace nesnesi, veri alanlarıyla birlikte aşağıdaki üye işlevlerini içerir:

  • isOpen, bir yerin belirtilen saatte 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 amacıyla GMSPlaceSearchNearbyRequest nesnesini kullanın.

  • Alan listesi

    Yer ayrıntılarını istediğinizde, bu yerin GMSPlace nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty öğesinden GMSPlaceSearchNearbyRequest nesnesine bir değer dizisi iletin. Alan maskeleme, gereksiz veri isteğinde bulunmamanızı sağlayan iyi bir tasarım uygulamasıdır. Böylece gereksiz işleme süresi ve faturalandırma ücretlerinin önüne geçilir.

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

    • Aşağıdaki alanlar Yakındaki Arama (Temel) SKU'sunu tetikler:

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

    • Aşağıdaki alanlar Yakındaki Arama (Gelişmiş) SKU'sunu tetikler:

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

    • Aşağıdaki alanlar Yakındaki Arama (Tercih Edilen) SKU'sunu tetikler:

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

    Aşağıdaki örnekte, bir istek tarafından döndürülen GMSPlace nesnesinin name ve placeID alanlarını içerdiğini belirtmek üzere iki alan değerinden oluşan bir liste aktarılır:

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

    GooglePlacesSwift

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

    Merkez noktası ve yarıçapla metre cinsinden tanımlanan, daire olarak belirtilmiş aranacak bölgeyi tanımlayan bir GMSPlaceLocationRestriction nesnesi. Yarıçap 0,0 ile 50000,0 (her ikisi de dahil) arasında olmalıdır. Varsayılan yarıçap 0,0'dır. Bunu isteğinizde 0,0'dan büyük bir değere ayarlamanız gerekir.

İsteğe bağlı parametreler

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

  • includes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes

    Arama sonuçlarını filtrelemek için kullanılan Tablo A türlerinden bir tür listesi belirtebilmenizi sağlar. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.

    Bir yerin yalnızca kendisiyle ilişkili Tablo A türlerindeki tek bir birincil türü olabilir. Örneğin, birincil tür "mexican_restaurant" veya "steak_house" olabilir. Sonuçları bir yerin birincil türüne göre filtrelemek için includedPrimaryTypes ve excludedPrimaryTypes öğelerini kullanın.

    Bir yerin kendisiyle ilişkili Tablo A türlerinden birden çok tür değeri de olabilir. Örneğin bir restoran şu türlere sahip olabilir: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Bir yerle ilişkili türler listesindeki sonuçları filtrelemek için includedTypes ve excludedTypes kullanın.

    Bir arama birden fazla tür kısıtlamasıyla belirtilirse yalnızca tüm kısıtlamaları karşılayan yerler döndürülür. Örneğin, {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]} değerini belirtirseniz döndürülen yerler "restaurant" ile ilgili hizmetler sunar ancak esasen "steak_house" olarak çalışmaz.

    includedTypes

    A Tablosu'nda aranacak yer türlerinin listesi. Bu parametre atlanırsa, her türden yer döndürülür.

    excludedTypes

    Aramadan hariç tutulacak yer türlerinin listesi (A Tablosu'ndaki).

    İstekte hem includedTypes ("school" gibi) hem de excludedTypes ("primary_school" gibi) belirtirseniz yanıt, "school" olarak sınıflandırılan ancak "primary_school" olarak kategorize edilmeyen yerleri içerir. Yanıt, includedTypes öğelerinden en az biriyle ve excludedTypes öğelerinden hiçbiri ile eşleşen yerleri içerir.

    Hem includedTypes hem de excludedTypes içinde görünen bir tür gibi çakışan türler varsa INVALID_REQUEST hatası döndürülür.

    includedPrimaryTypes

    A Tablosu'ndaki bir aramaya dahil edilecek birincil yer türlerinin listesi.

    excludedPrimaryTypes

    Aramadan hariç tutulacak A Tablosu'ndaki birincil yer türlerinin listesi.

    Hem includedPrimaryTypes hem de excludedPrimaryTypes içinde görünen bir tür gibi çakışan birincil türler varsa INVALID_ARGUMENT hatası döndürülür.

  • maxResultCount

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

  • rankPreference

    Kullanılacak sıralama türüdür. Bu parametre atlanırsa sonuçlar popülerliğe göre sıralanır. Aşağıdakilerden biri olabilir:

    • .popularity (varsayılan) Sonuçları popülerliklerine göre sıralar.
    • .distance Sonuçları, belirtilen konumdan uzaklığına göre artan düzende sıralar.
  • regionCode

    Yanıtı biçimlendirmek için kullanılan, iki karakterli CLDR kodu değeri olarak belirtilen bölge kodu. Varsayılan değer yoktur.

    Yanıttaki formattedAddress alanının ülke adı regionCode ile eşleşirse ülke kodu formattedAddress öğesinden çıkarılır. Bu parametrenin, ülke adını her zaman içeren adrFormatAddress veya hiçbir zaman içermeyen shortFormattedAddress üzerinde etkisi yoktur.

    Çoğu CLDR kodu, 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 ise "gb"'dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallık'ı" için kullanılır). Parametre, geçerli yasalara göre sonuçları etkileyebilir.

İlişkilendirmeleri uygulamanızda gösterin

Uygulamanız, GMSPlacesClient'ten alınan bilgiler (ör. fotoğraflar ve yorumlar) görüntülediğinde, gerekli atıfları da görüntülemelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği, en fazla beş GMSPlaceReview nesneden oluşan bir dizi içerir. Her GMSPlaceReview nesnesi, atıflar ve yazar ilişkilendirmeleri içerebilir. Yorumu, uygulamanızda gösterirseniz herhangi bir atıf veya yazar ilişkilendirmesini de göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler ile ilgili dokümanlara bakın.