Otomatik Yer Tamamlama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

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

Otomatik tamamlama (Yeni) hizmeti tam kapasitede eşleşebilir girişin kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı ekleyebilirsiniz. Dolayısıyla uygulamalar, anlık yer önerileri sunmak için kullanılır.

Yer önerileri; işletmeler, adresler ve birbirine ait konumlar gibi yerlerdir ilgi alanı (belirtilen giriş metni dizesine ve arama alanına göre)

Örneğin, giriş olarak kısmi bir Arama alanı İstanbul ile sınırlı olmak üzere, "Spagh" adlı kullanıcı girişi. Yanıtta, aramayla eşleşen yer önerilerinin bir listesi yer alır. "Kafe Spagetti" adlı restoran gibi bir dize ve arama alanını, bilgileri takip edebilirsiniz.

Döndürülen yer önerileri, kullanıcıya sunulabilecek şekilde tasarlanmıştır. istedikleri yeri seçebilmelerini sağlar. Bir Yer Ayrıntıları oluşturabilirsiniz (Yeni) daha fazla almak için istek gönderin yer önerilerinden herhangi biri hakkında bilgi verir.

Otomatik tamamlama (Yeni) istekleri

GMSPlaceClient. Parametreleri GMSAutocompleteRequest nesnesini tanımlayın. Yanıt, otomatik tamamlama önerilerini GMSAutocompletePlaceSuggestion nesnesini tanımlayın.

API anahtarı ve query parametreleri gereklidir. Şunları da ekleyebilirsiniz: GMSAutocompleteSessionToken ve istekleri bir faturalandırma oturumuyla ilişkilendirmek için GMSAutocompleteFilter sonuçlara uygulamak için kullanılır.

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

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

GooglePlacesSwift

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.
}

Otomatik tamamlama (Yeni) yanıtları

Otomatik tamamlama, en fazla beşlik bir dizi döndürür GMSAutocompleteSuggestion örnek. Dizi şunları içerir:

  • placeID
  • types: Bu yer için geçerli olan türler.
  • distanceMeters: Kalkış noktasından uzaklık.
  • attributedFullText: Bir önerinin kullanıcılar tarafından okunabilen tam metni.
  • attributedPrimaryText: Bir önerinin kullanıcılar tarafından okunabilen birincil metni.
  • attributedSecondaryText: Bir önerinin kullanıcılar tarafından okunabilen ikincil metni.
  • structuredFormat: Belirli bir ad ve belirsizleştirme yapan metin (ör. şehir veya bölge.

Gerekli parametreler

sorgu

Arama yapılacak metin dizesi. Tam kelimeleri ve alt dizeleri belirtin, yeri adları, adresleri ve artı kodlarını kullanın. İlgili içeriği oluşturmak için kullanılan Otomatik tamamlama (Yeni) hizmeti aday eşleşmelerini döndürür alaka düzeyine göre sıralar.

İsteğe bağlı parametreler

türler

Bir yerin yalnızca tek bir birincil türü şu türlerden olabilir:Tablo A veya Tablo B ile ilişkilendirilmelidir. Örneğin, birincil tür mexican_restaurant veya steak_house olabilir.

Varsayılan olarak API, input parametresine göre tüm yerleri döndürür. . Sonuçları kısıtla geçirerek belirli bir birincil tür veya birincil türde olmasını types parametresinden yararlanın.

Tablodan en fazla beş tür değeri belirtmek için bu parametreyi kullanın A veya Tablo B. Yer, eşleşmelidir yanıta dahil edilecek belirtilen birincil tür değerlerinden biri olmalıdır.

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

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

ülkeler

Yalnızca, dizi olarak belirtilen, belirtilen bölgeler listesinden sonuçları dahil et 15 ccTLD ("üst düzey) alan adı") iki karakterli değerler sunmalıdır. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, bölgeleri Almanya ve Fransa ile sınırlamak için:

Swift

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

Objective-C

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

GooglePlacesSwift

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

Hem locationRestriction hem de countries belirtirseniz sonuçlar şu şekilde olur: iki ayarın kesişim alanında yer alır.

inputOffset

İmlecin konumunu gösteren sıfır tabanlı Unicode karakter ofseti input İmleç konumu, hangi tahminlerin döndürüleceğini etkileyebilir. Eğer boşsa varsayılan olarak input uzunluğunda olur.

Konum ön yargıları veya konum Kısıtlaması

tanımlamak için locationBias veya locationRestriction belirtebilirsiniz ancak ikisini birden belirtemezsiniz alanı seçin. locationRestriction, bir hedefin etkin olduğu bölgeyi sonuçlar, içinde yer almalı ve locationBias olarak belirtmek üzere sonuçlar yakınında olmalıdır ancak bölgenin dışında olabilir.

  • locationBias, aranacak bir alan belirtiyor. Bu konum önyargı işlevi görür Bu, aşağıdakiler de dahil olmak üzere, belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir: belirtilen alanın dışındaki sonuçları döndürür.

  • locationRestriction, aranacak bir alan belirtiyor. dışındaki sonuçlar belirtilen alan döndürülmez.

locationBias veya locationRestriction bölgesini dikdörtgen olarak belirtin veya daire olarak kullanabilirsiniz.

Bir daire, merkez noktası ve metre cinsinden yarıçapla tanımlanır. Yarıçap şöyle olmalıdır: 0,0 ve 50.000,0 (her ikisi de dahil) arasındadır. Varsayılan değer 0,0'dır. Örneğin, locationRestriction 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:

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

GooglePlacesSwift

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

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

let filter = AutocompleteFilter(coordinateRegionBias: bias)      
  

Dikdörtgen, iki köşegen olarak gösterilen enlem-boylam görünümüdür karşısında low ve high puan. Görüntü alanı, kapalı bir bölge olarak kabul edilir. yani sınırlarını içerir. Enlem sınırları -90 ile arasında olmalıdır 90 derece dahil olmak üzere boylam sınırları ise -180 ile 180 aralığında olmalıdır derece (bu değerler dahil):

  • low = high olursa, görüntü alanı bu tek noktadan oluşur.
  • Eğer low.longitude > high.longitude ise, boylam aralığı tersine çevrilir ( 180 derecelik 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ş.

Hem low hem de high doldurulmalıdır, temsil edilen kutu kullanılamaz boştur. Boş görüntü alanı hatayla sonuçlanır.

Örneğin, bu görüntü alanı New York City'yi tamamen kapsar:

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

GooglePlacesSwift

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

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

kaynak

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

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

GooglePlacesSwift

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

regionCode

Yanıtı biçimlendirmek için kullanılan bölge kodu, ccTLD ("üst düzey alan adı") iki karakterlik değer. Çoğu ccTLD kodu, ISO 3166-1 kodlarıyla aynıdır; ancak bazı önemli istisnaları var. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" olur (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak " Büyük Britanya ve Kuzey İrlanda Birleşik Krallık'ı").

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

sessionToken

Oturum jetonları, etkinlikleri izleyen kullanıcı tarafından oluşturulmuş Aramaları "oturumlar" olarak otomatik tamamlama (yeni). Otomatik Tamamlama (Yeni), kullanıcının otomatik tamamlama aramasının sorgu ve seçim aşamalarını tek bir oturumda tamamlama . Daha fazla bilgi için bkz. Oturum jetonlar.

Otomatik tamamlama (Yeni) örnekleri

Konum kısıtlaması ve konum önerileri kullan

Otomatik Tamamlama (Yeni) özelliği varsayılan olarak IP ağırlıklandırmayı kullanır: Arama alanını kontrol edebilir. IP'ye ağırlık vermede API, cihazdaki değerleri doğru şekilde ayırın. İsteğe bağlı olarak, locationRestriction veya belirtmek için locationBias (ikisi birden değil) alan adını tıklayın.

Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı döndürülmez. Aşağıdaki örnekte, kullanıcıları merkezde 5.000 metre yarıçaplı dairesel bir yer kısıtlamasına yönelik istek daha fazla bilgi edindiniz:

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

GooglePlacesSwift

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.
}
  

Konum ön yargısında, konum bir yanlılık işlevi görür ve bu da belirtilen konumun dışındaki sonuçlar da dahil olmak üzere, belirtilen konum döndürülebilir. alanı. Sonraki örnek, konum yanlılığını kullanmak için önceki isteği değiştirir:

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

GooglePlacesSwift

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.
}
  

Kullanım türleri

Bir isteğin sonuçlarını belirli bir sayıyla sınırlamak için type (türler) parametresini kullanın aşağıdaki gibi yazın: Tablo A ve Tablo B. Hedeflerinize göre bir en fazla beş değer dizisidir. Atlanırsa tüm türler döndürülür.

Aşağıdaki örnekte "Futbol" sorgu dizesi belirtiliyor ve Yeşil Ofis’te parametresini kullanarak sonuçları "sporting_goods_store":

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

GooglePlacesSwift

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.
}
    

Kaynağı kullan

İsteğe origin parametresini eklediğinizde, enlem ve boylam koordinatlarıyla birlikte API, başlangıç noktasından hedefe doğru ayrılmalıdır. Yanıt, distanceMeters olarak mesafe.

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

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

GooglePlacesSwift

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.
}
  

İlişkilendirmeler

Otomatik tamamlama (Yeni) özelliğini bir haritadır. Harita gösteriyorsanız bu bir Google haritası olmalıdır. Gösterdiğinizde Otomatik tamamlama (Yeni) hizmetinden öneriler harita olmadan, arama sonuçlarında satır içi olarak görüntülenen Google logosunu alanı/sonuçları. Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.