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

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 şu biçimde bir eşleşme dizisi döndürür: GMSPlace nesnelerinde, eşleşen yer başına bir GMSPlace nesnesi bulunur.

Veri alanlarıyla birlikte, GMSPlace yanıt aşağıdaki üye işlevlerini içerir:

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

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

    GooglePlacesSwift

    // 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

Şunun 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.