השירות 'השלמה אוטומטית (חדש)' הוא ממשק API ל-iOS שמחזיר הצעות למקומות בתגובה לבקשה. בבקשה, מציינים מחרוזת חיפוש טקסט ומגבלות גיאוגרפיות שקובעות את אזור החיפוש.
השירות 'השלמה אוטומטית (חדש)' יכול להתאים למילים מלאות ולמחרוזות משנה של הקלט, ולפתור שמות של מקומות, כתובות וקודי פלוס. כך אפליקציות יכולות לשלוח שאילתות בזמן שהמשתמש מקלידים, כדי לספק הצעות למקומות בזמן אמת.
הצעות למקומות הן מקומות, כמו עסקים, כתובות ואתרי עניין, שמבוססים על מחרוזת הטקסט שצוינה בתיבת הטקסט ועל אזור החיפוש.
לדוגמה, אפשר להפעיל את ה-API באמצעות מחרוזת שמכילה קלט חלקי של המשתמש, 'Spagh', כאשר אזור החיפוש מוגבל לעיר ניו יורק. התגובה תכלול רשימה של הצעות למקומות שתואמים למחרוזת החיפוש ולתחום החיפוש, כמו המסעדה 'קפה ספאג', יחד עם פרטים על המקום.
הצעות המקומות שחוזרות נועדו להציג למשתמש כדי שהוא יוכל לבחור את המקום הרצוי. אפשר לשלוח בקשה מסוג פרטי מקום (חדש) כדי לקבל מידע נוסף על כל אחת מההצעות למקום שהוחזרו.
יש שתי דרכים עיקריות לשילוב הפונקציות של ההשלמה האוטומטית (חדש) באפליקציה:
- קבלת תחזיות של מקומות באופן פרוגרמטי: אפשר להפעיל את ה-API ישירות כדי לאחזר תחזיות ולהציג אותן בממשק משתמש מותאם אישית.
- הוספת הווידג'ט 'השלמה אוטומטית של מקומות': חוויית שימוש מוכנה להשלמה אוטומטית של חיפוש, שמציגה חיזויים בזמן שהמשתמש מקלידים.
אחזור חיזויים של מקומות באופן פרוגרמטי
בקשות להשלמה אוטומטית (חדש)
כדי ליצור בקשת השלמה אוטומטית, צריך להפעיל שיטה ב-GMSPlacesClient
.
אפשר להעביר פרמטרים באובייקט GMSAutocompleteRequest
. התשובה כוללת הצעות להשלמה אוטומטית באובייקט GMSAutocompletePlaceSuggestion
.
חובה להזין את מפתח ה-API ואת הפרמטרים query
. אפשר גם לכלול את הערך GMSAutocompleteSessionToken
כדי לשייך בקשות לסשן חיוב, ואת הערך GMSAutocompleteFilter
כדי להחיל את הפונקציה על התוצאות.
גרסת ה-SDK של Places ל-Swift
כדי ליצור בקשת השלמה אוטומטית, צריך להפעיל שיטה ב-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
. המערך מכיל:
placeID
types
: הסוגים שחלים על המקום הזה.distanceMeters
: המרחק מהמקור.attributedFullText
: הטקסט המלא של ההצעה שקריא לאנשים.attributedPrimaryText
: הטקסט הראשי של ההצעה שקריא לאנשים.attributedSecondaryText
: טקסט משני של הצעה שקריא לאנשים.structuredFormat
: השם הספציפי והטקסט להסרת הספק, כמו עיר או אזור.
פרמטרים נדרשים
שאילתה
מחרוזת הטקסט שבה יתבצע החיפוש. אפשר לציין מילים מלאות ומחרוזות משנה, שמות של מקומות, כתובות וקודי plus. השירות 'השלמה אוטומטית (חדש)' מחזיר התאמות לפי המחרוזת הזו ומסדר את התוצאות לפי הרלוונטיות המשוערת שלהן.
פרמטרים אופציונליים
sessionToken
אסימוני סשנים הם מחרוזות שנוצרות על ידי משתמשים ומשמשות למעקב אחרי קריאות להשלמה אוטומטית (חדשות) – גם קריאות שבוצעו דרך הווידג'ט וגם קריאות פרוגרמטיות – בתור 'סשנים'. בתכונה 'השלמה אוטומטית' (חדשה) נעשה שימוש באסימוני סשן כדי לקבץ את שלבי השאילתה והבחירה בחיפוש של השלמה אוטומטית של משתמש לסשן נפרד למטרות חיוב. מידע נוסף זמין במאמר אסימוני סשן.
פרמטרים אופציונליים של AutocompleteFilter
סוגים
למקום יכול להיות רק סוג ראשי אחד מהסוגים טבלה א' או טבלה ב' שמשויכים אליו.
לדוגמה, הסוג הראשי יכול להיות mexican_restaurant
או steak_house
.
כברירת מחדל, ה-API מחזיר את כל המקומות על סמך הפרמטר input
, ללא קשר לערך הסוג הראשי שמשויך למקום. כדי להגביל את התוצאות לסוג ראשי מסוים או לסוגים ראשיים מסוימים, מעבירים את הפרמטר types
.
משתמשים בפרמטר הזה כדי לציין עד חמישה ערכי טיפוס מ-Table A או מ-Table B. כדי שמקום ייכלל בתגובה, הוא צריך להתאים לאחד מערכי הסוג הראשי שצוינו.
הבקשה תידחה עם השגיאה INVALID_REQUEST
אם:
- צוינו יותר מחמישה סוגים.
- כל סוגי הקבצים שלא מזוהים יצוינו.
לדוגמה, כדי להגביל את התוצאות לחנויות לציוד ספורט, צריך לציין את הסוג הזה ב-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" ];
ארצות
הכלל הזה מאפשר לכלול רק תוצאות מהרשימה של האזורים שצוינו, כפי שצוינו במערך של עד 15 ערכים של ccTLD ('דומיין ברמה עליונה') בת שני תווים. אם השדה הזה לא יצוין, לא יחולו הגבלות על התגובה. לדוגמה, כדי להגביל את האזורים לגרמניה ולצרפת:
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
, התוצאות נמצאות באזור החיתוך של שתי ההגדרות.
inputOffset
ההיסט של תו Unicode שמבוסס על אפס, שמציין את מיקום הסמן ב-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);
מקור
נקודת המוצא שממנה מחושב המרחק בקו ישר ליעד (הערך מוחזר כ-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
קוד האזור שמשמש לעיצוב התגובה, שצוין כערך בן שני תווים של ccTLD ('דומיין ברמה עליונה'). רוב הקודים של TLD ברמת המדינה זהים לקודי ISO 3166-1, מלבד כמה יוצאים מן הכלל. לדוגמה, הדומיין ברמה העליונה של בריטניה הוא 'uk' (.co.uk), ואילו הקוד שלה לפי תקן ISO 3166-1 הוא 'gb' (טכנית, עבור הישות 'בריטניה הגדולה וצפון אירלנד').
אם מציינים קוד אזור לא תקין, ה-API מחזיר את השגיאה INVALID_ARGUMENT
. הפרמטר יכול להשפיע על התוצאות בהתאם לדין החל.
shouldIncludePureServiceAreaBusinesses
אם הערך הוא true
, המערכת מחזירה עסקים שמוגדרים כ'נותני שירות באזור מוגדר' במערך התשובות. עסק שנותן שירות באזור מוגדר (SAB) הוא עסק שעובדיו מגיעים אל הלקוחות או מציעים להם משלוחים באופן ישיר, אבל לא משרתים לקוחות בכתובת העסק.
לדוגמה:
Places Swift SDK
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Swift
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.shouldIncludePureServiceAreaBusinesses = YES;
הוספת הווידג'ט 'השלמה אוטומטית למקומות'
כדי לספק בקלות רבה יותר חוויה עקבית של השלמה אוטומטית של מקומות, אפשר להוסיף לאפליקציה את הווידג'ט 'השלמה אוטומטית של מקומות'. הווידג'ט מספק ממשק ייעודי במסך מלא שמטפל בהזנת המשתמש ומציג למשתמש תחזיות של מקומות, תוך החזרת אובייקטים מסוג AutocompletePlaceSuggestion
לאפליקציה. לאחר מכן תוכלו לשלוח בקשה מסוג פרטי מקום (חדש) כדי לקבל מידע נוסף על כל אחת מהתחזיות של המקומות.
בדומה לקבלת חיזויים של מקומות באופן פרוגרמטי, אפשר להשתמש בווידג'ט 'השלמה אוטומטית למקומות' כדי לקבץ בקשות להשלמה אוטומטית בסשן לצורכי חיוב, באמצעות אסימוני סשן. כדי להעביר אסימון סשן, צריך לבצע את הקריאה AutocompleteSessionToken()
.
אם לא תספקו אסימון סשן, הווידג'ט ייצור בשבילכם אסימון סשן של השלמה אוטומטית, שניתן יהיה לקבל מ-callback onSelection
. מידע נוסף על שימוש באסימוני סשן זמין במאמר מידע על אסימוני סשן.
כשערך הקישור של show
מוגדר כ-true
, המשתמש יועבר לתצוגה במסך מלא שבה הוא יוכל לבחור מקום. כשהמשתמש מקלידים, הווידג'ט מחזיר הצעות למקומות כמו עסקים, כתובות ואתרים מעניינים. כשהמשתמש בוחר מקום, הווידג'ט קורא למטפל onSelection
עם המקום שנבחר, וסוגר את התצוגה במסך מלא.
פרמטרים של ווידג'ט של השלמה אוטומטית למקומות
בנוסף לפרמטרים שזמינים באופן פרוגרמטי, הווידג'ט של השלמה אוטומטית של מקומות מציע גם את הפרמטרים הבאים.
הצג
show
מציין אם הווידג'ט מוצג.
AutocompleteUICustomization
הפרמטרים AutocompleteUICustomization
מציינים את ההתאמות של ממשק המשתמש שיחולו על הווידג'ט. אפשרויות ההתאמה אישית הן:
AutocompleteListDensity
. הפרמטר הזה מאפשר לכם לבחור את הצפיפות של רשימת ההצעות,multiLine
אוtwoLine
.AutocompleteUIIcon
. הפרמטר הזה מאפשר לכם לבחור אם להציג את סמל ברירת המחדל לכל פריט ברשימה.
onSelection
החסימה שתופעל כשנבחר מקום.
onError
הקוד לסגירה שיופעל כשמתרחשת שגיאה. אם מתרחשת שגיאה, המערכת מעבירה את הערך PlacesError
.
דוגמאות להשלמה אוטומטית (חדש)
שימוש ב-locationRestriction וב-locationBias
בהשלמה האוטומטית (חדשה) נעשה שימוש בהטיה לפי כתובת IP כברירת מחדל כדי לשלוט באזור החיפוש. כשמשתמשים בהטיה לפי כתובת IP, ה-API משתמש בכתובת ה-IP של המכשיר כדי להטות את התוצאות. אפשר גם להשתמש ב-locationRestriction
או ב-locationBias
, אבל לא בשניהם, כדי לציין אזור לחיפוש.
הגבלת המיקום מציינת את האזור שבו יתבצע החיפוש. לא יוצגו תוצאות מחוץ לאזור שצוין. בדוגמה הבאה נעשה שימוש בהגבלת מיקום כדי להגביל את הבקשה להגבלת מיקום עגולה ברדיוס של 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. } } }];
סוגי שימושים
אפשר להשתמש בפרמטר types כדי להגביל את התוצאות של בקשה לסוג מסוים, כפי שמפורט בטבלה A ובטבלה B. אפשר לציין מערך של עד חמישה ערכים. אם לא צוין, כל הסוגים יחזרו.
בדוגמה הבאה מצוין מחרוזת שאילתה של 'Soccer', והפרמטר types משמש להגבלת התוצאות למקומות מסוג "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 והשיוכים.