Yakında Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Yakın Çevrede Arama (Yeni) isteği, daire olarak belirtilen, dairenin merkez noktasının enlem ve boylam koordinatları ve yarıçapı (metre cinsinden) ile tanımlanan arama bölgesini giriş olarak alır. İstek, belirtilen arama alanındaki eşleşen yerlerin listesini döndürür. Bu liste, her biri bir GMSPlace nesnesi ile temsil edilen yerler içerir.

Yanıt, varsayılan olarak arama alanındaki tüm türde yerleri 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", "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 Yakınlarda Arama isteği gönderin. Bu yönteme, istek parametrelerini tanımlayan bir GMSPlaceSearchNearbyRequest nesnesi ve yanıtı işlemek için GMSPlaceSearchNearbyResultCallback türündeki bir geri çağırma yöntemi gönderin.

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

  • GMSPlaceProperty tarafından tanımlandığı şekilde, 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.
  • Konum kısıtlaması, yani arama alanını tanımlayan daire.

Bu örnek yakın arama isteğinde, yanıt GMSPlace nesnelerinin arama sonuçlarındaki her GMSPlace nesnesi için yer adını (GMSPlacePropertyName) ve yer koordinatlarını (GMSPlacePropertyCoordinate) içerdiği belirtilmektedir. 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;
    }
  }
];

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

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ında Arama yanıtları

Yakındaki 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ı Enterprise 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 gerekli parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest nesnesini kullanın.

  • Alan listesi

    Yer ayrıntılarını istediğinizde, döndürülecek verileri yer için GMSPlace nesnesinde alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty değerinden GMSPlaceSearchNearbyRequest nesnesine bir değer dizisi gönderin. Alan maskeleme, gereksiz veri istememenizi sağlamak için iyi bir tasarım uygulamasıdır. Bu uygulama, gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınmanıza yardımcı olur.

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

    • Aşağıdaki alanlar Yakında Arama Pro SKU'sunu tetikler:

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

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

      GMSPlacePropertyCurrentOpeningHours
      GMSPlacePropertySecondaryOpeningHours
      GMSPlacePropertyPhoneNumber
      GMSPlacePropertyPriceLevel
      GMSPlacePropertyRating
      GMSPlacePropertyOpeningHours
      GMSPlacePropertyUserRatingsTotal
      GMSPlacePropertyWebsite

    • Aşağıdaki alanlar Yakındakiler 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ğerinin listesi iletilmektedir:

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

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

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

    Arama yapılacak bölgeyi daire olarak tanımlayan, merkez noktası ve yarıçapı (metre cinsinden) ile tanımlanan bir GMSPlaceLocationRestriction nesnesi. Yarıçap 0,0 ile 50000,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 Tablo A türlerinden türlerin listesini belirtmenizi sağlar. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.

    Bir mekan, 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. Sonuçları bir yerin birincil türüne göre filtrelemek için includedPrimaryTypes ve excludedPrimaryTypes değerlerini kullanın.

    Bir yerin, ilişkili Tablo A türlerinden birden fazla tür değeri de olabilir. Örneğin, bir restoranın şu türleri olabilir: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Bir yerle ilişkili tür listesinde 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ıt, belirtilenden daha spesifik birincil türde yerler içerebilir. Örneğin, birincil tür olarak "restaurant" eklemeyi belirtirsiniz. Yanıt, birincil türü "restaurant" olan yerleri içerebilir ancak "chinese_restaurant" veya "seafood_restaurant" gibi daha spesifik birincil türe sahip yerleri de içerebilir.

    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 birincil olarak "steak_house" olarak faaliyet göstermez.

    includedTypes

    A Tablosu'ndaki aranacak yer türlerinin listesi. Bu parametre atlanırsa tüm türde yerler döndürülür.

    excludedTypes

    Aramadan hariç tutulacak Tablo A'daki yer türlerinin listesi.

    İstekte hem includedTypes (ör. "school") hem de excludedTypes (ör. "primary_school") parametresini belirtirseniz yanıt, "primary_school" olarak sınıflandırılmayan ancak "school" olarak sınıflandırılan yerleri içerir. Yanıt, includedTypes ile en az bir, excludedTypes ile ise hiçbir eşleşmeyen yerleri içerir.

    Hem includedTypes hem de excludedTypes'te görünen bir tür gibi çelişen tür varsa INVALID_REQUEST hatası döndürülür.

    includedPrimaryTypes

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

    excludedPrimaryTypes

    Aramadan hariç tutulacak Tablo A'daki birincil yer türlerinin listesi.

    Hem includedPrimaryTypes hem de excludedPrimaryTypes'te görünen bir tür gibi birbiriyle çelişen 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ü. 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. İki karakterli CLDR kodu değeri olarak belirtilir. Varsayılan değer yoktur.

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

    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österdiğinde 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.