Yakındaki Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Yakındaki Arama (Yeni) isteği, arama yapılacak bölgeyi giriş olarak alır merkez noktasının enlem ve boylam koordinatlarıyla tanımlanan bir daire olarak belirtilir ve metre cinsinden yarıçapı gösterir. İstek, her biri GMSPlace nesnesini ifade eder.

Varsayılan olarak yanıt, arama alanı içindeki her türden yeri içerir. İsterseniz açıkça eklenecek veya hariç tutulacak yer türlerinin listesini belirterek yanıtı filtreleyin: tıklayın. Örneğin, yanıta yalnızca "restoran", "pastane" ve "kafe" olabilir veya "okul" türündeki tüm yerleri hariç tutabilirsiniz.

Yakındaki Arama (Yeni) istekleri

Şu numarayı arayarak Yakında Arama isteğinde bulunma: GMSPlacesClient searchNearbyWithRequest: doğru GMSPlaceSearchNearbyRequest Türündeki istek parametrelerini ve bir geri çağırma yöntemini tanımlayan nesne GMSPlaceSearchNearbyResultCallback biraz zaman alabilir.

GMSPlaceSearchNearbyRequest nesnesi, zorunlu ve isteğe bağlı parametrelerini kullanır. Gerekli parametreler şunları içerir:

  • GMSPlace nesnesinde döndürülecek alanların listesi (diğer adıyla aşağıdaki şekilde tanımlandığı şekilde alan maskesi: GMSPlaceProperty. Alan listesinde en az bir alan belirtmezseniz veya alan adını sonra çağrı, bir hata döndürür.
  • Konum kısıtlaması, arama alanını tanımlayan daire anlamına gelir.

Bu örnek yakındaki arama isteği, yanıt GMSPlace nesnelerinin yer adını (GMSPlacePropertyName) ve yer koordinatlarını içermelidir Aramadaki her GMSPlace nesne için (GMSPlacePropertyCoordinate) sonuç. Ayrıca yanıtı yalnızca "restoran" türündeki yerleri döndürecek şekilde filtreler. ve "cafe" yer alır.

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

Nearby Search API şu biçimde bir eşleşme dizisi döndürür: GMSPlace nesnelerinde, eşleşen yer başına bir GMSPlace nesnesi bulunur.

Açık durumunu al

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

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

  • Bir GMSPlace nesnesi veya yer kimliğini belirten bir dize. Gerekli alanlarla Yer nesnesinin oluşturulması hakkında daha fazla bilgi için Yer ayrıntıları'na bakın.
    .
  • 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 şu an kullanılır.
  • Yanıtı işlemek için GMSPlaceOpenStatusResponseCallback yöntemi.
  • >
ziyaret edin.

GMSPlaceIsOpenWithRequest yöntemi, aşağıdaki alanların GMSPlace nesnesinde ayarlanmasını gerektirir:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

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

isOpenWithRequest yanıt

isOpenWithRequest, işletmenin açık mı kapalı mı olduğunu veya durumun bilinmiyor olduğunu belirten status adlı boole değerini 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ı için Yer Ayrıntıları (Gelişmiş) SKU altında ödeme alınır.
  • GMSPlace nesnenizde önceki bir istekte zaten bu alanlar varsa sizden tekrar ücret alınmaz.

Örnek: GMSPlaceIsOpenWithRequest isteğinde bulunma

Aşağıdaki örnekte, mevcut bir GMSPlace nesnesi içinde bir GMSPlaceIsOpenWithRequest işleminin 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

Şunun için gerekli parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest nesnesini kullanın: anlamına gelir.

  • Alan listesi

    Yer ayrıntılarını istediğinizde, ayrıntılar için sonuç, yer için GMSPlace nesnesini alan maskesi olarak döndürür. Şunu tanımlamak için: alan maskesi, GMSPlaceProperty. [GMSPlaceSearchNearbyRequest nesnesine]. Alan maskeleme, gereksiz verileri istemediğinizden emin olmak için iyi bir tasarım uygulamasıdır, Böylece gereksiz işlem süresi ve faturalandırma masrafı ortadan kalkar.

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

    • Aşağıdaki alanlar, Yakındakilerde Arama (Temel) SKU'su:

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

    • Aşağıdaki alanlar, Yakında Arama (Gelişmiş) SKU'su:

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

    • Aşağıdaki alanlar, Yakındakiler İçin Arama (Tercih Edilen) SKU'su:

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

    Aşağıdaki örnekte iki öğeli bir liste alan değerleri (istek tarafından döndürülen GMSPlace nesnesinin name ve placeID alanları:

    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

    GMSPlaceLocationRestriction Daire olarak belirtilen, merkez noktası ve ile tanımlanmış, aranacak bölgeyi tanımlayan nesne metre cinsinden yarıçap. Yarıçap, 0,0 ile 50.000,0 (her ikisi de dahil) arasında olmalıdır. Varsayılan yarıçap: 0,0. Bu değeri, isteğinizde 0,0'dan büyük bir değere ayarlamanız gerekir.

İsteğe bağlı parametreler

Aşağıdakiler için isteğe bağlı parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest nesnesini kullanın: anlamına gelir.

  • includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes

    Türlerden bir tür listesi belirtebilmenizi sağlar. Filtreleme için kullanılan Tablo A en iyi yoludur. Her bir tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.

    Bir yerin, türlerden yalnızca tek bir birincil türü olabilir Şununla ilişkili Tablo A: somut olarak ortaya koyar. Örneğin, birincil tür "mexican_restaurant" veya "steak_house". Tekliflerinizi otomatikleştirmek ve optimize etmek için Sonuçları filtrelemek için includedPrimaryTypes ve excludedPrimaryTypes bir yerin birincil türü olabilir.

    Bir yer, türlerden birden fazla tür değerine de sahip olabilir A Tablosu görüntülenebilir. Örneğin, bir restoran aşağıdaki türlere sahip olabilir: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". includedTypes hesabını kullan ve excludedTypes ile ilişkili türler listesindeki sonuçları filtrelemek için bir yer.

    "restaurant" veya "hotel", yanıt, belirtilen öğedir. Örneğin, "restaurant" Böylece yanıt, birincil türün "restaurant", ancak yanıt daha spesifik yerler de içerebilir birincil tür, örneğin "chinese_restaurant" veya "seafood_restaurant".

    Bir arama birden çok tür kısıtlamasıyla belirtilirse, yalnızca yerler için tüm kısıtlamaları karşılayanlar döndürülür. Örneğin, {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, iade edilen yerler, "restaurant" ile ilgili hizmet sağlıyor ancak öncelikli olarak faaliyet göstermiyor "steak_house" olarak.

    includedTypes

    Şu kaynaktan yer türlerinin bir listesi: Aranacak Tablo A'yı tıklayın. Bu parametre eklenmezse her türden yer döndürülür.

    excludedTypes

    Şu kaynaktan yer türlerinin bir listesi: Tablo A arayın.

    Hem includedTypes (örneğin, "school") hem de excludedTypes ("primary_school" gibi) ve ardından yanıt, "school" olarak sınıflandırılan ancak "primary_school". Yanıt, şunlardan en az biriyle eşleşen yerleri içerir: includedTypes ve excludedTypes hiçbiri.

    Çakışan türler varsa (örneğin, her iki includedTypes öğesinde de görünen bir tür) ve excludedTypes ise INVALID_REQUEST hatası döndürülür.

    includedPrimaryTypes

    Şu konumdaki birincil yer türlerinin bir listesi: Dahil edilecek Tablo A anlamına gelir.

    excludedPrimaryTypes

    Şu konumdaki birincil yer türlerinin bir listesi: Hariç tutulacak Tablo A elde edebilirsiniz.

    Çakışan birincil türler varsa (örneğin, her ikisinde de görünen bir tür) includedPrimaryTypes ve excludedPrimaryTypes, INVALID_ARGUMENT hata döndürüldü.

  • maxResultCount

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

  • rankPreference

    Kullanılacak sıralama türü. Bu parametre eklenmezse 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ı uzaklığa göre artan düzende sıralar. belirtilen konum.
  • regionCode

    Yanıtı biçimlendirmek için kullanılan bölge kodu, CLDR kodu değerini girin. Varsayılan bir değer yok.

    Yanıttaki formattedAddress alanının ülke adı regionCode, ülke kodu formattedAddress öğesinden atlanır. Bu parametrenin, her zaman ülkeyi içeren adrFormatAddress üzerinde etkisi yoktur. adı veya hiçbir zaman içermeyen shortFormattedAddress üzerinde.

    Çoğu CLDR kodu aynıdır. ISO 3166-1 kodları, bazı önemli istisnalarla birlikte. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı"). Parametre, geçerli yasalara göre sonuçları etkileyebilir.

İlişkilendirmeleri uygulamanızda gösterme

Uygulamanız, GMSPlacesClient (ör. fotoğraflar ve yorumlar) uygulamada, gerekli ilişkilendirmeler de gösterilmelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği en fazla beşten oluşan bir dizi içerir GMSPlaceReview nesneler'i tıklayın. Her GMSPlaceReview nesnesi atıflar ve yazar atıfları içerebilir. Yorumu uygulamanızda gösteriyorsanız atıfı veya yazarı da göstermeniz gerekir ilişkilendirmesine yardımcı olur.

Daha fazla bilgi için ilişkilendirmeler.