Otomatik Yer Tamamlama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Otomatik Tamamlama (Yeni) hizmeti, bir isteğe yanıt olarak yer önerileri döndüren bir iOS API'sidir. İstekte, arama alanını kontrol eden bir metin arama dizesi ve coğrafi sınırlar belirtin.

Otomatik Tamamlama (Yeni) hizmeti, yer adlarını, adresleri ve artı kodlarını çözerek girişin tam kelimelerini ve alt dizelerini eşleştirebilir. Bu nedenle uygulamalar, kullanıcı yazarken anında yer önerileri sunmak için sorgu gönderebilir.

Yer önerileri, belirtilen giriş metin dizesine ve arama alanına göre işletme, adres ve önemli yerler gibi yerlerdir.

Örneğin, API'yi çağırırken giriş olarak kısmi bir kullanıcı girişi olan "Spagh" ifadesini kullanırsınız. Arama alanı New York ile sınırlıdır. Ardından yanıtta, arama dizesi ve arama alanıyla eşleşen yer önerilerinin listesi (ör. "Cafe Spaghetti" adlı restoran) ve yerle ilgili ayrıntılar yer alır.

Döndürülen yer önerileri, kullanıcının istediği yeri seçebilmesi için kullanıcıya sunulacak şekilde tasarlanmıştır. Döndürülen yer önerilerinden herhangi biri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.

Otomatik Tamamlama (Yeni) işlevini uygulamanıza iki temel şekilde entegre edebilirsiniz:

Yer tahminlerini programatik olarak alma

Otomatik Tamamlama (Yeni) istekleri

GMSPlacesClient üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun. GMSAutocompleteRequest nesnesine parametre gönderebilirsiniz. Yanıt, bir GMSAutocompletePlaceSuggestion nesnesi içinde otomatik tamamlama önerileri sağlar.

API anahtarı ve query parametreleri gereklidir. İstekleri bir faturalandırma oturumuyla ilişkilendirmek için GMSAutocompleteSessionToken ve sonuçları uygulamak için GMSAutocompleteFilter parametrelerini de ekleyebilirsiniz.

Places Swift SDK sürümü

PlacesClient üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun. AutocompleteRequest nesnesine parametre gönderebilirsiniz. Yanıt, bir AutocompletePlaceSuggestion nesnesi içinde otomatik tamamlama önerileri sağlar.

API anahtarı ve query parametreleri gereklidir. İstekleri bir faturalandırma oturumuyla ilişkilendirmek için AutocompleteSessionToken ve sonuçları uygulamak için AutocompleteFilter parametrelerini de ekleyebilirsiniz.

Zorunlu ve isteğe bağlı parametreler hakkında daha fazla bilgi için bu dokümanın parametreler bölümüne bakın.

Yerler Swift SDK'sı

let center = (37.3913916, -122.0879074)
let northEast = (37.388162, -122.088137)
let southWest = (37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  // Handle suggestions.
case .failure(let placesError):
  // Handle error.
}

Swift

let token = GMSAutocompleteSessionToken()

let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051)
let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds)

let request = GMSAutocompleteRequest(query:"Spagh")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ kGMSPlaceTypeRestaurant ];
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Otomatik tamamlama (Yeni) yanıtları

Otomatik tamamlama, beş adede kadar GMSAutocompleteSuggestion örneği içeren bir dizi döndürür. Dizi şunları içerir:

  • placeID
  • types: Bu yer için geçerli olan türler.
  • distanceMeters: Başlangıç noktasından uzaklık.
  • attributedFullText: Kullanıcı tarafından okunabilen öneri metninin tamamı.
  • attributedPrimaryText: Bir önerinin kullanıcı tarafından okunabilen birincil metni.
  • attributedSecondaryText: Bir önerinin, kullanıcılar tarafından okunabilen ikincil metni.
  • structuredFormat: Belirli ad ve anlam karışıklığını gideren metin (ör. şehir veya bölge).

Gerekli parametreler

sorgu

Aramanın yapılacağı metin dizesi. Tam kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı kodlarını belirtin. Otomatik Tamamlama (Yeni) hizmeti, bu dizeye göre olası eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.

İsteğe bağlı parametreler

sessionToken

Oturum jetonları, Otomatik Tamamlama (Yeni) aramalarını (widget üzerinden yapılan aramalar ve programatik aramalar dahil) "oturumlar" olarak izleyen, kullanıcı tarafından oluşturulan dizelerdir. Otomatik Tamamlama (Yeni), kullanıcı otomatik tamamlama aramasının sorgu ve seçim aşamalarını faturalandırma amacıyla ayrı bir oturumda gruplandırmak için oturum jetonlarını kullanır. Daha fazla bilgi için Oturum jetonları başlıklı makaleyi inceleyin.

İsteğe bağlı AutocompleteFilter parametreleri

türler

Bir yerin yalnızca Tablo A veya Tablo B türlerinden tek bir birincil türü olabilir. Örneğin, birincil tür mexican_restaurant veya steak_house olabilir.

API varsayılan olarak, yerle ilişkili birincil tür değerinden bağımsız olarak tüm yerleri input parametresine göre döndürür. types parametresini ileterek sonuçları belirli bir birincil tür veya birincil türlerle sınırlandırın.

Tablo A veya Tablo B'den en fazla beş tür değeri belirtmek için bu parametreyi kullanın. Bir yer, yanıta dahil edilmek için belirtilen birincil tür değerlerinden biriyle eşleşmelidir.

Aşağıdaki durumlarda istek INVALID_REQUEST hatasıyla reddedilir:

  • Beşten fazla tür belirtilmiş.
  • Tanınmayan türler belirtilir.

Örneğin, sonuçları spor malzemeleri mağazalarıyla sınırlamak için AutocompleteFilter parametresinde bu türü belirtin:

Yerler Swift SDK'sı

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
  

Swift

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]
  

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];

ülkeler

Yalnızca belirtilen bölgelerin listesinden gelen sonuçları dahil eder. Bu liste, en fazla 15 ccTLD ("üst düzey alan") iki karakterli değer dizisi olarak belirtilir. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, bölgeleri Almanya ve Fransa ile sınırlamak için:

Yerler Swift SDK'sı

let filter = AutocompleteFilter(countries: ["DE", "FR"])
  

Swift

let filter = GMSAutocompleteFilter()
filter.countries = ["DE", "FR"]

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.countries = @[ @"DE", @"FR" ];

Hem locationRestriction hem de countries'ü belirtirseniz sonuçlar, iki ayarın kesişim alanında bulunur.

inputOffset

input içindeki imleç konumunu belirten sıfır tabanlı Unicode karakter ofseti. İmlecin konumu, döndürülen tahminleri etkileyebilir. Boşsa varsayılan olarak input uzunluğunda olur.

locationBias veya locationRestriction

Arama alanını tanımlamak için locationBias veya locationRestriction ikilisinden birini belirtebilirsiniz; ikisini birden belirtmeyin. locationRestriction'ü, sonuçların içinde olması gereken bölgeyi, locationBias'ü ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.

  • locationBias, aranacak bir alanı belirtir. Bu konum, bir önyargı görevi görür. Yani belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun çevresindeki sonuçlar döndürülebilir.

  • locationRestriction, aranacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez.

locationBias veya locationRestriction bölgesini dikdörtgen bir görüntü alanı veya daire olarak belirtin.

Daireler, merkez noktası ve yarıçapı (metre cinsinden) ile tanımlanır. Yarıçap 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan değer 0,0'dır. locationRestriction için yarıçapı 0, 0'dan büyük bir değere ayarlamanız gerekir. Aksi takdirde istek hiçbir sonuç döndürmez.

Örneğin:

Yerler Swift SDK'sı

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

let bias = CircularCoordinateRegion(center: center, radius: 1000.0)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let center = CLLocationCoordinate2DMake(40.730610, -73.935242)
let radius = 1000.0

filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242);
radius = 1000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);

Dikdörtgen, çapraz olarak birbirine zıt iki low ve high noktası olarak gösterilen bir enlem-boylam görüntü alanıdır. Görüntü alanı kapalı bir bölge olarak kabul edilir. Yani görüntü alanı, kendi sınırını içerir. Enlem sınırları -90 ile 90 derece arasında (bu değerler dahil), boylam sınırları ise -180 ile 180 derece arasında (bu değerler dahil) olmalıdır:

  • low = high ise görüntü alanı tek bir noktadan oluşur.
  • low.longitude > high.longitude ise boylam aralığı tersine çevrilir (görüntü alanı 180 derece boylam çizgisini geçer).
  • low.longitude = -180 derece ve high.longitude= 180 derece ise görüntü alanı tüm boylamları içerir.
  • low.longitude = 180 derece ve high.longitude = -180 derece ise boylam aralığı boştur.

Hem low hem de high doldurulmalıdır ve temsil edilen kutu boş olamaz. Boş bir görüntü alanı hatayla sonuçlanır.

Örneğin, bu görüntü alanı New York'u tamamen içine alır:

Yerler Swift SDK'sı

let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087)
let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let high = CLLocationCoordinate2DMake(40.921628, -73.700051)
let low = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(high, low)

Objective-C

CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087);
CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceRectangularLocationOption(high, low);

kaynak

Hedefe olan düz çizgi mesafesinin hesaplanacağı başlangıç noktası (distanceMeters olarak döndürülür). Bu değer atlanırsa düz çizgi mesafesi döndürülmez. Enlem ve boylam koordinatları olarak belirtilmelidir:

Yerler Swift SDK'sı

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
  

Swift

let filter = GMSAutocompleteFilter()
filter.origin =  CLLocation(latitude: 37.395804, longitude: -122.077023)
 

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];

filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];

regionCode

Yanıtı biçimlendirmek için kullanılan bölge kodu. ccTLD ("üst düzey alan") iki karakterli bir değer olarak belirtilir. ccTLD 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" iken (.co.uk) 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).

Geçersiz bir bölge kodu belirtirseniz API INVALID_ARGUMENT hatası döndürür. Parametre, geçerli yasaya göre sonuçları etkileyebilir.

shouldIncludePureServiceAreaBusinesses

true ise yanıt dizisinde yalnızca hizmet bölgesi işletmelerini döndürür. Saf hizmet bölgesi işletmesi, müşterileri doğrudan ziyaret eden veya onlara teslimat yapan ancak işletme adresinde müşterilere hizmet vermeyen bir işletmedir.

Örneğin:

Yerler Swift SDK'sı

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Swift

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.shouldIncludePureServiceAreaBusinesses = YES;

Yer Adı Otomatik Tamamlama widget'ını ekleme

Tutarlı bir yer otomatik tamamlama deneyimi sunmak için uygulamanıza Yer Otomatik Tamamlama widget'ını ekleyebilirsiniz. Widget, kullanıcı girişini işleyen ve uygulamaya AutocompletePlaceSuggestion öğeleri döndürürken kullanıcıya yer tahminlerini gösteren özel, tam ekran bir arayüz sağlar. Ardından, yer tahminlerinden herhangi biri hakkında ek bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.

Yer adı otomatik tamamlama widget&#39;ı

Yer tahminlerini programatik olarak alma işleminde olduğu gibi, Yer Otomatik Tamamlama widget'ı da faturalandırma amacıyla otomatik tamamlama isteklerini oturumlara gruplandırmak için oturum jetonlarını kullanmanıza olanak tanır. AutocompleteSessionToken() işlevini çağırarak oturum jetonu iletebilirsiniz.

Oturum jetonu sağlamazsanız widget sizin için bir Otomatik Tamamlama oturum jetonu oluşturur. Bu jeton daha sonra onSelection geri çağırma işlevinden elde edilebilir. Oturum jetonlarını kullanma hakkında daha fazla bilgi için Oturum jetonları hakkında başlıklı makaleyi inceleyin.

show bağlama değeri true olarak ayarlandığında kullanıcı, bir yer seçebileceği tam ekran görünümüne yönlendirilir. Kullanıcı yazarken widget; işletme, adres ve önemli yerler gibi yerlerle ilgili öneriler döndürür. Kullanıcı bir yer seçtiğinde widget, seçilen yerle birlikte onSelection işleyiciyi çağırır ve tam ekran görünümü kapatır.

Yer Adı Otomatik Tamamlama widget'ı parametreleri

Otomatik Yer Tamamlama widget'ı, programlı olarak kullanılabilen parametrelere ek olarak aşağıdaki parametreleri de sunar.

göster

show, widget'ın gösterilip gösterilmeyeceğini belirtir.

AutocompleteUICustomization

AutocompleteUICustomization parametreleri, widget'a uygulanacak kullanıcı arayüzü özelleştirmelerini belirtir. Özelleştirme seçenekleri şunlardır:

  • AutocompleteListDensity: Bu parametre, öneri listesinin yoğunluğunu (multiLine veya twoLine) seçmenize olanak tanır.
  • AutocompleteUIIcon: Bu parametre, her liste öğesi için varsayılan simgenin gösterilip gösterilmeyeceğini seçmenize olanak tanır.

onSelection

Bir yer seçildiğinde çalışacak kapanış.

onError

Hata oluştuğunda çalıştırılacak kapatma. Hata meydana gelirse PlacesError iletilir.

Tam kod örneğine bakın.

Otomatik tamamlama (yeni) örnekleri

locationRestriction ve locationBias özelliklerini kullanma

Otomatik Tamamlama (Yeni), arama alanını kontrol etmek için varsayılan olarak IP önyargısını kullanır. IP önyargısı, sonuçları önyargılı hale getirmek için API'nin cihazın IP adresini kullanmasıdır. Arama yapılacak alanı belirtmek için isteğe bağlı olarak locationRestriction veya locationBias'den birini kullanabilirsiniz.

Konum kısıtlaması, aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Aşağıdaki örnekte, isteği San Francisco merkezli 5.000 metre yarıçaplı dairesel bir konum kısıtlamasıyla sınırlamak için konum kısıtlaması kullanılır:

Yerler Swift SDK'sı

let center = (37.775061, -122.419400)
let radius = 5000.0
let restriction = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionRestriction: restriction)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Konum yanlılığı, konumun bir yanlılık olarak kullanıldığı anlamına gelir. Bu, belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir. Aşağıdaki örnekte, önceki istek konum önyargısı kullanacak şekilde değiştirilmiştir:

Yerler Swift SDK'sı

let center = (37.775061, -122.419400)
let radius = 5000.0
let bias = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionBias: bias)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Kullanım türleri

Bir istekteki sonuçları Tablo A ve Tablo B'de listelenen belirli bir türde olacak şekilde kısıtlamak için types parametresini kullanın. En fazla beş değer içeren bir dizi belirtebilirsiniz. Atlanırsa tüm türler döndürülür.

Aşağıdaki örnekte "Futbol" adlı bir sorgu dizesi belirtilmiştir ve sonuçları "sporting_goods_store" türündeki tesislerle sınırlandırmak için types parametresi kullanılmıştır:

Yerler Swift SDK'sı

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
    

Swift

let token = GMSAutocompleteSessionToken()

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]

let request = GMSAutocompleteRequest(query:"Soccer")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Kaynağı kullanın

İsteğe enlem ve boylam koordinatları olarak belirtilen origin parametresini eklediğinizde API, başlangıçtan hedefe kadar olan düz çizgi mesafesini yanıta dahil eder. Yanıt, mesafeyi distanceMeters olarak döndürür.

Bu örnekte, başlangıç noktası San Francisco'nun merkezi olarak ayarlanmıştır:

Yerler Swift SDK'sı

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194))
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let origin = CLLocation(latitude: 37.7749, longitude: -122.4194)

let filter = GMSAutocompleteFilter()

filter.origin =  origin

let request = GMSAutocompleteRequest(query:"Amoeba")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
      }
    }
}];

Yerler Otomatik Tamamlama widget'ı ekleme

Yerler Swift SDK'sı

struct PlaceAutocompleteDemoView: View {

  @State private var fetchedPlace: Place?
  @State private var placesError: PlacesError?
  @State private var showWidget = false

  public var body: some View {
    VStack {
      Button("Search for a place") {
        showWidget.toggle()
      }
      .placeAutocomplete(
        show: $showWidget,
        onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in
          Task {
            let placesClient = await PlacesClient.shared
            let fetchPlaceRequest = FetchPlaceRequest(
              placeID: autocompletePlaceSuggestion.placeID,
              placeProperties: [.displayName, .formattedAddress],
              sessionToken: autocompleteSessionToken
            )

            switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
            case .success(let place):
              print("Fetched place: \(place)")
              self.fetchedPlace = place
            case .failure(let placesError):
              print("Failed to fetch place: \(placesError)")
              self.placesError = placesError
            }
          }
        },
        onError: { placesError in
          self.placesError = placesError
        }
      )
    }
  }
}

İlişkilendirmeler

Otomatik Tamamlama (Yeni) özelliğini harita olmadan da kullanabilirsiniz. Harita göstermek istiyorsanız Google haritası olmalıdır. Otomatik Tamamlama (Yeni) hizmetinden gelen önerileri harita olmadan gösterdiğinizde arama alanı/sonuçlarla satır içi olarak gösterilen Google logosunu eklemeniz gerekir. Daha fazla bilgi için Google logosunu ve ilişkilendirmeleri görüntüleme başlıklı makaleyi inceleyin.