บริการ Autocomplete (ใหม่) คือ iOS API ที่แสดงสถานที่แนะนำตามคำขอ ในคำขอ ให้ระบุสตริงการค้นหาข้อความและขอบเขตทางภูมิศาสตร์ที่ควบคุมพื้นที่การค้นหา
บริการเติมข้อความอัตโนมัติ (ใหม่) สามารถจับคู่กับทั้งคำและสตริงย่อยของอินพุต โดยจะแก้ไขชื่อสถานที่ ที่อยู่ และรหัสบวก แอปพลิเคชันจึงสามารถส่งการค้นหาขณะที่ผู้ใช้พิมพ์เพื่อแสดงการแนะนำสถานที่ได้ทันที
สถานที่ที่แนะนำคือสถานที่ต่างๆ เช่น ธุรกิจ ที่อยู่ และจุดที่น่าสนใจ โดยอิงตามสตริงข้อความที่ป้อนและพื้นที่การค้นหาที่ระบุ
เช่น คุณเรียกใช้ API โดยใช้สตริงที่มีอินพุตบางส่วนของผู้ใช้ "Spagh" เป็นอินพุต โดยจำกัดพื้นที่การค้นหาไว้ที่นครนิวยอร์ก จากนั้นการตอบกลับจะมีรายการสถานที่แนะนำที่ตรงกับสตริงการค้นหาและพื้นที่การค้นหา เช่น ร้านอาหารชื่อ "Cafe Spaghetti" พร้อมรายละเอียดเกี่ยวกับสถานที่
คำแนะนำสถานที่ที่แสดงผลออกแบบมาเพื่อแสดงต่อผู้ใช้เพื่อให้ผู้ใช้เลือกสถานที่ที่ต้องการได้ คุณส่งคําขอรายละเอียดสถานที่ (ใหม่) เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับสถานที่ที่แนะนำซึ่งแสดงผลได้
คุณสามารถผสานรวมฟังก์ชันการเติมข้อความอัตโนมัติ (ใหม่) เข้ากับแอปได้ 2 วิธีหลัก ดังนี้
- รับการคาดการณ์สถานที่แบบเป็นโปรแกรม: เรียกใช้ API โดยตรงเพื่อดึงข้อมูลการคาดการณ์และแสดงในอินเทอร์เฟซผู้ใช้ที่กําหนดเอง
- เพิ่มวิดเจ็ตการเติมข้อความอัตโนมัติของสถานที่: มอบประสบการณ์การเติมข้อความอัตโนมัติในการค้นหาที่พร้อมใช้งานซึ่งจะแสดงการคาดคะเนขณะที่ผู้ใช้พิมพ์
รับการคาดการณ์สถานที่แบบเป็นโปรแกรม
คำขอการเติมข้อความอัตโนมัติ (ใหม่)
สร้างคําขอเติมข้อความอัตโนมัติโดยการเรียกใช้เมธอดใน GMSPlacesClient
คุณสามารถส่งพารามิเตอร์ในออบเจ็กต์ GMSAutocompleteRequest
ได้ คำตอบจะแสดงคำแนะนำที่เติมข้อความอัตโนมัติภายในออบเจ็กต์GMSAutocompletePlaceSuggestion
ต้องระบุคีย์ API และพารามิเตอร์ query
นอกจากนี้ คุณยังใส่
GMSAutocompleteSessionToken
เพื่อเชื่อมโยงคำขอกับเซสชันการเรียกเก็บเงิน และใส่
GMSAutocompleteFilter
เพื่อใช้กับผลลัพธ์ได้ด้วย
เวอร์ชัน Places Swift SDK
สร้างคําขอเติมข้อความอัตโนมัติโดยการเรียกใช้เมธอดใน PlacesClient
คุณสามารถส่งพารามิเตอร์ในออบเจ็กต์ AutocompleteRequest
ได้ คำตอบจะแสดงคำแนะนำที่เติมข้อความอัตโนมัติภายในออบเจ็กต์AutocompletePlaceSuggestion
ต้องระบุคีย์ API และพารามิเตอร์ query
นอกจากนี้ คุณยังใส่
AutocompleteSessionToken
เพื่อเชื่อมโยงคำขอกับเซสชันการเรียกเก็บเงิน และใส่
AutocompleteFilter
เพื่อใช้กับผลลัพธ์ได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ที่จําเป็นและไม่บังคับได้ที่ส่วนพารามิเตอร์ของเอกสารนี้
Places Swift SDK
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. } } }];
เติมข้อความอัตโนมัติ (ใหม่)
ฟีเจอร์เติมข้อความอัตโนมัติจะแสดงผลอาร์เรย์ของอินสแตนซ์GMSAutocompleteSuggestion
ได้สูงสุด 5 รายการ อาร์เรย์ประกอบด้วย
placeID
types
: ประเภทที่ใช้กับสถานที่นี้distanceMeters
: ระยะทางจากต้นทางattributedFullText
: ข้อความคำแนะนำที่มนุษย์อ่านได้แบบเต็มattributedPrimaryText
: ข้อความหลักที่อ่านได้ของคำแนะนำattributedSecondaryText
: ข้อความรองที่มนุษย์อ่านได้ของคำแนะนำstructuredFormat
: ชื่อที่เฉพาะเจาะจงและข้อความที่สื่อความหมายชัดเจน เช่น เมืองหรือภูมิภาค
พารามิเตอร์ที่จำเป็น
query
สตริงข้อความที่จะค้นหา ระบุคำเต็มและสตริงย่อย ชื่อสถานที่ ที่อยู่ และ Plus Codes บริการฟีเจอร์เติมข้อความอัตโนมัติ (ใหม่) จะแสดงรายการที่ตรงกันโดยอิงตามสตริงนี้ และจัดเรียงผลลัพธ์ตามความเกี่ยวข้องที่รับรู้
พารามิเตอร์ที่ไม่บังคับ
sessionToken
โทเค็นเซสชันคือสตริงที่ผู้ใช้สร้างขึ้นซึ่งติดตามการเรียกใช้ฟีเจอร์เติมข้อความอัตโนมัติ (ใหม่) ทั้งการเรียกใช้ผ่านวิดเจ็ตและการเรียกใช้แบบเป็นโปรแกรมเป็น "เซสชัน" ฟีเจอร์เติมข้อความอัตโนมัติ (ใหม่) ใช้โทเค็นเซสชันเพื่อจัดกลุ่มระยะการค้นหาและการเลือกของผู้ใช้ในการค้นหาที่เติมข้อความอัตโนมัติไว้ในเซสชันที่แยกกันเพื่อวัตถุประสงค์ในการเรียกเก็บเงิน ดูข้อมูลเพิ่มเติมได้ที่โทเค็นเซสชัน
พารามิเตอร์ AutocompleteFilter ที่ไม่บังคับ
ประเภท
สถานที่หนึ่งๆ มีประเภทหลักได้เพียงประเภทเดียวจากประเภท Table
A หรือ Table
B ที่เชื่อมโยงอยู่
เช่น ประเภทหลักอาจเป็น mexican_restaurant
หรือ steak_house
โดยค่าเริ่มต้น API จะแสดงสถานที่ทั้งหมดตามพารามิเตอร์ input
โดยไม่คำนึงถึงค่าประเภทหลักที่เชื่อมโยงกับสถานที่ จำกัดผลการค้นหาให้อยู่ในรูปแบบหลักหรือประเภทหลักบางประเภทโดยส่งพารามิเตอร์ types
ใช้พารามิเตอร์นี้เพื่อระบุค่าประเภทได้สูงสุด 5 ค่าจากตาราง A หรือตาราง B สถานที่ต้องตรงกับค่าประเภทหลักที่ระบุไว้ค่าใดค่าหนึ่งจึงจะรวมอยู่ในคำตอบ
ระบบจะปฏิเสธคำขอพร้อมข้อผิดพลาด INVALID_REQUEST
ในกรณีต่อไปนี้
- ระบุประเภทมากกว่า 5 ประเภท
- ระบุประเภทที่ไม่รู้จัก
เช่น หากต้องการจำกัดผลการค้นหาให้แสดงเฉพาะร้านค้าอุปกรณ์กีฬา ให้ระบุประเภทนั้นในAutocompleteFilter
Places Swift SDK
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" ];
ประเทศ
รวมเฉพาะผลลัพธ์จากรายการภูมิภาคที่ระบุ ซึ่งระบุเป็นอาร์เรย์ของค่า 2 อักขระ ccTLD ("โดเมนระดับบนสุด") ไม่เกิน 15 รายการ หากไม่ระบุ ระบบจะไม่ใช้ข้อจำกัดกับการตอบกลับ เช่น หากต้องการจํากัดภูมิภาคเป็นเยอรมนีและฝรั่งเศส ให้ทําดังนี้
Places Swift SDK
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" ];
หากคุณระบุทั้ง locationRestriction
และ countries
ผลลัพธ์จะอยู่ในบริเวณที่ตัดกันของการตั้งค่าทั้ง 2 รายการ
inputOffset
ออฟเซตอักขระ Unicode ที่นับจาก 0 ซึ่งระบุตำแหน่งเคอร์เซอร์ใน input
ตำแหน่งเคอร์เซอร์อาจส่งผลต่อคำที่ระบบคาดคะเน หากว่างเปล่า ระบบจะใช้ความยาว input
เป็นค่าเริ่มต้น
locationBias หรือ locationRestriction
คุณสามารถระบุ locationBias
หรือ locationRestriction
เพียงรายการใดรายการหนึ่งเพื่อกําหนดพื้นที่การค้นหา ให้คิดว่า locationRestriction
เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และ locationBias
เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ใกล้ๆ แต่อยู่นอกพื้นที่ได้
locationBias
ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ใช้เป็นค่ากําหนด ซึ่งหมายความว่าระบบจะแสดงผลการค้นหารอบๆ ตำแหน่งที่ระบุ รวมถึงผลการค้นหานอกพื้นที่ที่ระบุlocationRestriction
ระบุพื้นที่ที่จะค้นหา ระบบจะไม่แสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ
ระบุภูมิภาค locationBias
หรือ locationRestriction
เป็นวิดเจ็ตภาพสี่เหลี่ยมผืนผ้าหรือเป็นวงกลม
วงกลมจะกำหนดโดยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมีต้องอยู่ในช่วง 0.0 ถึง 50000.0 ค่าเริ่มต้นคือ 0.0 สำหรับ
locationRestriction
คุณต้องตั้งค่ารัศมีเป็นค่าที่มากกว่า 0.0
ไม่เช่นนั้นคําขอจะไม่แสดงผลลัพธ์
เช่น
Places Swift SDK
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);
สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็นจุด low
และ high
ที่ตรงกันข้ามกันตามเส้นทแยงมุม วิวพอร์ตถือเป็นภูมิภาคแบบปิด ซึ่งหมายความว่าจะมีขอบเขตรวมอยู่ด้วย ขอบเขตละติจูดต้องอยู่ในช่วง -90 ถึง 90 องศา และขอบเขตลองจิจูดต้องอยู่ในช่วง -180 ถึง 180 องศา
- หาก
low
=high
วิวพอร์ตจะประกอบด้วยจุดเดียวนั้น - หาก
low.longitude
>high.longitude
ช่วงลองจิจูดจะกลับกัน (วิดเจ็ตแสดงผลตัดผ่านเส้นลองจิจูด 180 องศา) - หาก
low.longitude
= -180 องศาและhigh.longitude
= 180 องศา วิดเจ็ตพื้นที่ทำงานจะรวมลองจิจูดทั้งหมด - หาก
low.longitude
= 180 องศาและhigh.longitude
= -180 องศา ช่วงลองจิจูดจะว่างเปล่า
ต้องป้อนทั้ง low
และ high
และช่องที่แสดงต้องไม่ว่างเปล่า วิวพอร์ตว่างเปล่าจะทำให้เกิดข้อผิดพลาด
ตัวอย่างเช่น วิดเจ็ตนี้แสดงภาพนิวยอร์กซิตี้โดยสมบูรณ์
Places Swift SDK
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);
origin
จุดเริ่มต้นที่จะคำนวณระยะทางเส้นตรงไปยังจุดหมาย (แสดงผลเป็น distanceMeters
) หากไม่ระบุค่านี้ ระบบจะไม่แสดงผลระยะทางเส้นตรง ต้องระบุเป็นพิกัดละติจูดและลองจิจูด
Places Swift SDK
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
รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ ซึ่งระบุเป็นค่า 2 อักขระของ ccTLD ("โดเมนระดับบนสุด") รหัส ccTLD ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นบางประการ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ส่วนรหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคสำหรับนิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ")
หากคุณระบุรหัสภูมิภาคที่ไม่ถูกต้อง API จะแสดงINVALID_ARGUMENT
ข้อผิดพลาด พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
เพิ่มวิดเจ็ต Place Autocomplete
คุณสามารถเพิ่มวิดเจ็ตการเติมข้อความอัตโนมัติของสถานที่ลงในแอปเพื่อให้ผู้ใช้ได้รับประสบการณ์การเติมข้อความอัตโนมัติของสถานที่ที่สอดคล้องกันได้ง่ายขึ้น วิดเจ็ตนี้มีอินเทอร์เฟซแบบเต็มหน้าจอเฉพาะที่จัดการอินพุตของผู้ใช้ และแสดงการคาดคะเนสถานที่แก่ผู้ใช้ขณะแสดงผลออบเจ็กต์ AutocompletePlaceSuggestion
ไปยังแอป จากนั้นคุณสามารถส่งคําขอรายละเอียดสถานที่ (ใหม่) เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับการคาดคะเนสถานที่
เช่นเดียวกับเมื่อรับการคาดคะเนสถานที่แบบเป็นโปรแกรม วิดเจ็ต Place Autocomplete ให้คุณใช้โทเค็นเซสชันเพื่อจัดกลุ่มคำขอการเติมข้อความอัตโนมัติไว้ในเซสชันสำหรับการเรียกเก็บเงิน คุณสามารถส่งโทเค็นเซสชันได้โดยเรียกใช้ AutocompleteSessionToken()
หากคุณไม่ได้ระบุโทเค็นเซสชัน วิดเจ็ตจะสร้างโทเค็นเซสชันที่เติมข้อความอัตโนมัติให้คุณ ซึ่งจะรับได้จาก onSelection
callbacks ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้โทเค็นเซสชันได้ที่เกี่ยวกับโทเค็นเซสชัน
เมื่อตั้งค่าการเชื่อมโยง show
เป็น true
ระบบจะนำผู้ใช้ไปยังมุมมองแบบเต็มหน้าจอที่สามารถเลือกสถานที่ได้ เมื่อผู้ใช้พิมพ์ วิดเจ็ตจะแสดงสถานที่ที่แนะนำ เช่น ธุรกิจ ที่อยู่ และจุดที่น่าสนใจ เมื่อผู้ใช้เลือกสถานที่ วิดเจ็ตจะเรียกใช้ตัวแฮนเดิล onSelection
พร้อมสถานที่ที่เลือก และปิดมุมมองแบบเต็มหน้าจอ
พารามิเตอร์วิดเจ็ตการเติมข้อความอัตโนมัติของ Place
นอกจากพารามิเตอร์ที่ใช้ได้ผ่านโปรแกรมแล้ว วิดเจ็ตการเติมข้อความอัตโนมัติของสถานที่ยังมีพารามิเตอร์ต่อไปนี้ด้วย
แสดง
show
ระบุว่าจะแสดงวิดเจ็ตหรือไม่
AutocompleteUICustomization
พารามิเตอร์ AutocompleteUICustomization
ระบุการปรับแต่ง UI ที่จะใช้กับวิดเจ็ต ตัวเลือกการปรับแต่งมีดังนี้
AutocompleteListDensity
พารามิเตอร์นี้ให้คุณเลือกความหนาแน่นของรายการคำแนะนำได้multiLine
หรือtwoLine
AutocompleteUIIcon
พารามิเตอร์นี้ให้คุณเลือกว่าจะแสดงไอคอนเริ่มต้นสำหรับรายการแต่ละรายการหรือไม่
onSelection
การดำเนินการที่จะทำงานเมื่อมีการเลือกสถานที่
onError
การดำเนินการที่จะทํางานเมื่อเกิดข้อผิดพลาด ระบบจะส่งค่า PlacesError
หากเกิดข้อผิดพลาด
ตัวอย่างการเติมข้อความอัตโนมัติ (ใหม่)
ใช้ locationRestriction และ locationBias
ฟีเจอร์เติมข้อความอัตโนมัติ (ใหม่) ใช้การถ่วงน้ำหนัก IP โดยค่าเริ่มต้นเพื่อควบคุมพื้นที่การค้นหา เมื่อใช้การถ่วงน้ำหนัก IP นั้น API จะใช้ที่อยู่ IP ของอุปกรณ์เพื่อถ่วงน้ำหนักผลลัพธ์ คุณสามารถใช้ locationRestriction
หรือ
locationBias
ก็ได้ (แต่ใช้ทั้ง 2 อย่างไม่ได้) เพื่อระบุพื้นที่ที่จะค้นหา
การจำกัดสถานที่ตั้งจะระบุพื้นที่ที่จะค้นหา ระบบจะไม่แสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ ตัวอย่างต่อไปนี้ใช้การจำกัดสถานที่ตั้งเพื่อจำกัดคำขอไปยังการจำกัดสถานที่ตั้งแบบวงกลมที่มีรัศมี 5,000 เมตรโดยศูนย์กลางอยู่ที่ซานฟรานซิสโก
Places Swift SDK
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. } } }];
เมื่อใช้การถ่วงน้ำหนักตามสถานที่ สถานที่จะทำหน้าที่เป็นปัจจัยถ่วงน้ำหนัก ซึ่งหมายความว่าระบบจะแสดงผลลัพธ์รอบๆ สถานที่ที่ระบุ รวมถึงผลลัพธ์นอกพื้นที่ที่ระบุ ตัวอย่างถัดไปจะเปลี่ยนคําขอก่อนหน้าให้ใช้การถ่วงน้ำหนักตามสถานที่
Places Swift SDK
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. } } }];
ประเภทการใช้งาน
ใช้พารามิเตอร์ประเภทเพื่อจํากัดผลการค้นหาจากคําขอให้อยู่ในรูปแบบที่ระบุไว้ในตาราง A และตาราง B คุณระบุอาร์เรย์ที่มีค่าได้สูงสุด 5 ค่า หากไม่ระบุ ระบบจะแสดงผลทุกประเภท
ตัวอย่างต่อไปนี้ระบุสตริงการค้นหา "Soccer" และใช้พารามิเตอร์ประเภทเพื่อจำกัดผลลัพธ์ให้แสดงเฉพาะสถานประกอบการประเภท "sporting_goods_store"
Places Swift SDK
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. } } }];
ใช้ต้นทาง
เมื่อคุณใส่พารามิเตอร์ origin
ไว้ในคําขอที่ระบุเป็นพิกัดละติจูดและลองจิจูด API จะรวมระยะทางตรงจากต้นทางไปยังปลายทางในการตอบกลับ การตอบกลับจะแสดงระยะทางเป็น distanceMeters
ตัวอย่างนี้จะตั้งค่าจุดเริ่มต้นเป็นศูนย์กลางของซานฟรานซิสโก
Places Swift SDK
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. } } }];
เพิ่มวิดเจ็ตการเติมข้อความอัตโนมัติของสถานที่
Places Swift SDK
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 } ) } } }
การระบุแหล่งที่มา
คุณใช้ฟีเจอร์เติมข้อความอัตโนมัติ (ใหม่) ได้แม้ไม่มีแผนที่ หากแสดงแผนที่ ต้องเป็นแผนที่ของ Google เมื่อแสดงคำแนะนำจากบริการการเติมข้อความอัตโนมัติ (ใหม่) ที่ไม่มีแผนที่ คุณต้องใส่โลโก้ Google ที่แสดงในบรรทัดเดียวกับช่องค้นหา/ผลการค้นหา ดูข้อมูลเพิ่มเติมได้ที่การแสดงโลโก้ Google และการระบุแหล่งที่มา