Yakında Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti
Avrupa Ekonomik Alanı (AEA) geliştiricileri

Yakın Çevrede Arama (Yeni) isteği, aranacak bölgeyi giriş olarak alır. Bu bölge, dairenin merkez noktasının enlem ve boylam koordinatları ile metre cinsinden yarıçapı tarafından tanımlanan bir daire olarak belirtilir. İstek, belirtilen arama alanında GMSPlace nesnesiyle temsil edilen eşleşen yerlerin listesini döndürür.

Varsayılan olarak, yanıtta arama alanındaki tüm yer türleri bulunur. İ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", "fırın" ve "kafe" türündeki yerlerin dahil edilmesini veya "okul" türündeki tüm yerlerin hariç tutulmasını belirtebilirsiniz.

Yakında Arama (Yeni) istekleri

GMSPlacesClient searchNearbyWithRequest: yöntemini çağırarak bir Yakındaki Arama isteğinde bulunun. İstek parametrelerini ve yanıtı işlemek için GMSPlaceSearchNearbyResultCallback türünde bir geri çağırma yöntemini tanımlayan bir GMSPlaceSearchNearbyRequest nesnesi iletin.

GMSPlaceSearchNearbyRequest 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.
  • Konum kısıtlaması: Arama alanını tanımlayan daire.

Bu yakındaki arama isteği örneğinde, yanıttaki GMSPlace nesnelerinin, arama sonuçlarındaki her GMSPlace nesnesi için yer adı (GMSPlacePropertyName) ve yer koordinatlarını (GMSPlacePropertyCoordinate) içermesi gerektiği belirtiliyor. Ayrıca yanıtı filtreleyerek yalnızca "restoran" ve "kafe" türündeki yerleri döndürür.

Places Swift SDK'sı

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
}

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

Yakında Arama yanıtları

Yakındaki Arama API'si, 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 GMSPlaceSearchNearbyRequest nesnesini kullanın.

  • Alan listesi

    Yer ayrıntılarını istediğinizde, yer için GMSPlace nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty değerlerinden oluşan bir diziyi GMSPlaceSearchNearbyRequest nesnesine iletin. Alan maskeleme, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınabilirsiniz.

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

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

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

    • Aşağıdaki alanlar Nearby Search Enterprise SKU'sunu tetikler:

      GMSPlacePropertyCurrentOpeningHours
      GMSPlacePropertySecondaryOpeningHours
      GMSPlacePropertyPhoneNumber
      GMSPlacePropertyPriceLevel
      GMSPlacePropertyRating
      GMSPlacePropertyOpeningHours
      GMSPlacePropertyUserRatingsTotal
      GMSPlacePropertyWebsite

    • Aşağıdaki alanlar, Yakındaki Arama Enterprise Plus 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 için iki alan değeri listesi iletilmektedir:

    Places Swift SDK'sı

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

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

    Arama yapılacak bölgeyi tanımlayan GMSPlaceLocationRestriction nesnesi. Merkez noktası ve metre cinsinden yarıçap ile tanımlanan bir daire olarak belirtilir. Yarıçap, 0,0 ile 50.000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan yarıçap 0,0'dır. İsteğinizde bu değeri 0,0'dan büyük bir değere ayarlamanız gerekir.

İsteğe bağlı parametreler

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

  • includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes

    Arama sonuçlarını filtrelemek için kullanılan türler Tablo A listesini belirtmenize olanak tanır. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.

    Bir yer, kendisiyle ilişkili Tablo A türlerinden yalnızca tek bir birincil türe sahip olabilir. Örneğin, birincil tür "mexican_restaurant" veya "steak_house" olabilir. Bir yerin birincil türüyle ilgili sonuçları filtrelemek için includedPrimaryTypes ve excludedPrimaryTypes simgelerini kullanın.

    Bir yer, Tablo A'daki türlerden birden fazla tür değerine de sahip olabilir. Tablo A ile ilişkilendirilmiş. Örneğin, bir restoranın şu türleri olabilir: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Bir yerle ilişkili türlerin listesindeki sonuçları filtrelemek için includedTypes ve excludedTypes tuşlarını kullanın.

    "restaurant" veya "hotel" gibi genel bir birincil tür belirttiğinizde yanıtta, belirtilen türden daha spesifik bir birincil tür içeren yerler olabilir. Örneğin, "restaurant" birincil türünü dahil etmeyi belirtirsiniz. Yanıtta, birincil türü "restaurant" olan yerler bulunabilir. Bununla birlikte, yanıtta "chinese_restaurant" veya "seafood_restaurant" gibi daha spesifik bir birincil türe sahip yerler de bulunabilir.

    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"]} belirtirseniz döndürülen yerler "restaurant" ile ilgili hizmetler sunar ancak öncelikli olarak "steak_house" olarak faaliyet göstermez.

    includedTypes

    Aranacak yer türlerinin listesi (Tablo A). Bu parametre atlanırsa her türden yer döndürülür.

    excludedTypes

    Tablo A'daki yer türlerinin bir arama işleminden hariç tutulacak listesi.

    İstek içinde hem includedTypes (ör. "school") hem de excludedTypes (ör. "primary_school") belirtirseniz yanıtta "school" olarak kategorize edilen ancak "primary_school" olarak kategorize edilmeyen yerler yer alır. Yanıtta, includedTypes değerlerinden en az biriyle eşleşen ve excludedTypes değerlerinden hiçbiriyle eşleşmeyen yerler yer alıyor.

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

    includedPrimaryTypes

    Aramaya dahil edilecek Tablo A'daki birincil yer türlerinin listesi.

    excludedPrimaryTypes

    Arama dışında tutulacak Tablo A'daki 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 (bu değerler dahil).

  • rankPreference

    Kullanılacak sıralama tü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 konuma olan mesafelerine göre artan düzende sıralar.
  • regionCode

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

    Yanıtın formattedAddress alanındaki ülke adı regionCode ile eşleşiyorsa ülke kodu formattedAddress alanından çıkarılır. Bu parametrenin, her zaman ülke adını içeren adrFormatAddress veya hiçbir zaman ülke adını içermeyen shortFormattedAddress üzerinde etkisi yoktur.

    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.

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.