חיפוש טקסט מחזיר מידע על קבוצה של מקומות בהתאם למחרוזת. לדוגמה, "פיצה בתל אביב", "חנויות נעליים בקרבת מקום" אוטווה", או "הרחוב הראשי 123". בתשובה של השירות מצוין רשימה של מקומות שתואמים למחרוזת הטקסט ולכל הטיית מיקום מוגדרת.
השירות שימושי במיוחד ליצירת כתובת לא ברורה שאילתות במערכת אוטומטית, ורכיבים שאינם כתובות של המחרוזת עשויים להתאים גם לעסקים וגם לעסקים. כתובות. דוגמאות לשאילתות כתובת לא חד-משמעיות הן כתובות בפורמט לא תקין או בקשות שכוללות רכיבים שאינם כתובות, כמו שמות עסקים. בקשות כמו שתי הדוגמאות הראשונות עשויות להחזיר אפס תוצאות, אלא אם מיקום (לדוגמה, אזור, הגבלת מיקום או הטיית מיקום) מוגדר.
"הרצל 10, בריטניה" או "הרצל 12, ישראל" | מספר שירותי "היי סטריט" בבריטניה; מספר "רחובות ראשיים" בארה"ב. השאילתה לא מחזירה תוצאות רצויות, אלא אם הוגדרה הגבלת מיקום הוגדרה. |
"Chainrestaurant New York" | כמה "מסעדות רשת" מיקומים בניו יורק; אין כתובת או אפילו שם הרחוב. |
" 10 High Street, Escher UK" או "הרצל 12, ישראל" | רק רחוב אחד ראשי בעיר אשר בבריטניה; רק "רחוב ראשי" אחד בעיר פלסנטון שבארה"ב, קליפורניה. |
"UniqueRestaurantName ניו יורק" | רק מוסד אחד בשם זה בניו יורק. אין רחוב שנדרש כדי להבחין. |
"פיצה מסעדות בתל אביב" | השאילתה הזו מכילה את הגבלת המיקום שלה ואת הקטגוריה "פיצריות" תואם לערך סוג של מקום מוגדר היטב. התוצאה מחזירה מספר תוצאות. |
" +1 514-670-8700" | השאילתה הזו מכילה מספר טלפון. היא מחזירה כמה תוצאות עבור מקומות שמשויכים למספר הטלפון הזה. |
קבלת רשימה של מקומות באמצעות חיפוש טקסט
כדי לבצע בקשת חיפוש טקסט, אפשר להתקשר למספר GMSPlacesClient
searchByTextWithRequest:
,
להעביר
GMSPlaceSearchByTextRequest
שמגדיר את הפרמטרים של הבקשה ושיטת קריאה חוזרת, מסוג
GMSPlaceSearchByTextResultCallback
,
כדי לטפל בתגובה.
האובייקט GMSPlaceSearchByTextRequest
מציין את כל
פרמטרים חובה ופרמטרים אופציונליים
לבקשה. הפרמטרים הנדרשים הם:
- רשימת השדות שצריך להחזיר באובייקט
GMSPlace
, וגם שנקראת מסכת שדות, כפי שמוגדרGMSPlaceProperty
אם לא מציינים שדה אחד לפחות ברשימת השדות, או אם משמיטים שדה. ברשימת השדות, ואז הקריאה מחזירה שגיאה. - שאילתת הטקסט.
הדוגמה הזו לחיפוש טקסט מציינת שהאובייקטים של התגובה GMSPlace
מכילים את שם המקום ומזהה המקום לכל אובייקט GMSPlace
בחיפוש
תוצאות. הוא גם מסנן את התשובה כך שיוצגו רק מקומות מסוג מסוים
"מסעדה".
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchByText(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
GooglePlacesSwift
let restriction = RectangularLocationRestriction( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
תשובות לחיפוש טקסט
ה-Text Search API מחזיר מערך של התאמות
צורה של
GMSPlace
אובייקטים, עם אובייקט GMSPlace
אחד לכל מקום תואם.
יחד עם שדות הנתונים, האובייקט GMSPlace
התשובה מכילה את פונקציות האיבר הבאות:
-
isOpen
מחשבת אם המקום פתוח בזמן נתון. isOpenAtDate
הפונקציה קובעת אם מקום מסוים פתוח בתאריך מסוים.
פרמטרים נדרשים
משתמשים באובייקט GMSPlaceSearchByTextRequest
כדי לציין את הערך הרצוי
פרמטרים לחיפוש.
-
רשימת שדות
יש לציין אילו מאפיינים של נתוני מקום להחזיר. העברת רשימה של
GMSPlace
מאפיינים שמציינים את שדות הנתונים שיוחזרו. אם משמיטים את השדה mask, הבקשה תחזיר שגיאה.רשימות שדות הן שיטה טובה לתכנן כדי להבטיח שלא תבקשו נתונים מיותרים, וכך למנוע זמן עיבוד מיותר חיובים.
צריך לציין אחד או יותר מהשדות הבאים:
השדות הבאים מפעילים את המק"ט של חיפוש טקסט (מזהה בלבד):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
השדות הבאים מפעילים את Text Search (Basic) SKU:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
השדות הבאים מפעילים את מק"ט של חיפוש טקסט (מתקדם):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
השדות הבאים מפעילים את מק"ט של חיפוש טקסט (מועדף):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
מחרוזת הטקסט שיש לחפש בה, לדוגמה: "מסעדה", "ראשי 123 רחוב", או "המקום הטוב ביותר לביקור בתל אביב".
פרמטרים אופציונליים
שימוש באובייקט GMSPlaceSearchByTextRequest
כדי לציין את הערך האופציונלי
פרמטרים לחיפוש.
includedType
הגבלת התוצאות למקומות התואמים לסוג שצוין מוגדר על ידי טבלה א'. אפשר לציין סוג אחד בלבד. לדוגמה:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
אם הערך שלו הוא
true
, מוחזר רק מקומות שפתוחים בו פעילות בזמן שהשאילתה נשלחת. אם הערך הואfalse
, החזרת כל העסקים ללא קשר לסטטוס הפתיחה. מקומות שלא צוינו עבורם שעות פתיחה במסד הנתונים של מקומות Google מוחזר אם הגדרתם את הפרמטר הזה ל-false
.isStrictTypeFiltering
משתמשים בו עם הפרמטר
includeType
. כשההגדרה מוגדרת לערךtrue
, רק מקומות שתואמים לסוגים שצוינוincludeType
הוחזרו. אם הערך הוא False, ברירת המחדל התשובה יכולה לכלול מקומות שלא תואמים מהסוגים שמצוינים.locationBias
מציין את האזור לחיפוש. המיקום הזה משמש כהטיה כלומר ניתן להחזיר תוצאות סביב המיקום שצוין, כולל תוצאות מחוץ לאזור שצוין.
אפשר לציין
locationRestriction
אוlocationBias
, אבל לא את שניהם. המשמעות שלlocationRestriction
היא שמציינים את אזור שהתוצאות חייבות להיות בו,locationBias
ציון האזור שהתוצאות חייבות להיות קרובות אליו, אבל יכולות להיות מחוץ לו את האזור.צריך לציין את האזור כאזור תצוגה מלבני או כעיגול.
מעגל מוגדר לפי נקודת המרכז והרדיוס במטרים. הרדיוס חייב להיות בין 0.0 ל-50000.0, כולל. רדיוס ברירת המחדל הוא 0.0. לדוגמה:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
מלבן הוא אזור תצוגה של קו רוחב, המיוצג כשני באלכסון מול נקודות נמוכות וגבוהות. הנקודה הנמוכה מסמנת את הדרום-מערב של המלבן, והנקודה הגבוהה מייצגת את הצפון-מזרח של המלבן.
אזור תצוגה נחשב אזור סגור, כלומר כולל את הגבולות שלו. גבולות קו הרוחב חייב להיות בטווח של 90- עד 90 מעלות כולל, וגבולות קו האורך חייב להיות בטווח של -180 עד 180 מעלות, כולל:
- אם
low
=high
, אזור התצוגה מורכב של הנקודה הזאת. - אם
low.longitude
>high.longitude
, טווח קו האורך הפוך (אזור התצוגה חוצה את הטווח של 180 מעלות) קו אורך). - אם הערך של
low.longitude
הוא -180 מעלות, וhigh.longitude
= 180 מעלות, אזור התצוגה כולל את כל קווי אורך ורוחב. - אם הטמפרטורה
low.longitude
= 180 מעלות וhigh.longitude
= -180 מעלות, טווח קו האורך הוא ריק. - אם
low.latitude
>high.latitude
, טווח הרוחב ריק.
- אם
locationRestriction
מציין את האזור לחיפוש. אין תוצאות מחוץ לאזור שצוין הוחזרו. הגדרת האזור כאזור תצוגה מלבני. להצגת התיאור מתוך
locationBias
לקבלת מידע על הגדרת אזור התצוגה.אפשר לציין
locationRestriction
אוlocationBias
, אבל לא את שניהם. המשמעות שלlocationRestriction
היא שמציינים את אזור שהתוצאות חייבות להיות בו,locationBias
ציון האזור שהתוצאות חייבות להיות קרובות אליו, אבל יכולות להיות מחוץ לו את האזור.-
maxResultCount
מציין את המספר המקסימלי של תוצאות של מקומות שצריך להחזיר. חייב להיות בטווח של 1 ו-20 (ברירת מחדל) (כולל).
minRating
הגבלת התוצאות רק למשתמשים שדירוג המשתמשים הממוצע שלהם גבוה מ- או שווה למגבלה זו. הערכים חייבים להיות בין 0.0 ל-5.0 (כולל) במאפיין במרווחים של 0.5. לדוגמה: 0, 0.5, 1.0, ... , 5.0 כולל. הערכים הם מעוגל למעלה אל מספר 0.5 הקרוב ביותר. לדוגמה, ערך של 0.6 מבטל את כל תוצאות עם דירוג נמוך מ-1.0.
-
priceLevels
הגבלת החיפוש למקומות שמסומנים ברמות מחירים מסוימות. ברירת המחדל היא לבחור את כל רמות המחירים.
ציון מערך של אחד או יותר מהערכים שמוגדרים על ידי
PriceLevel
לדוגמה:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
מציין איך התוצאות מדורגות בתשובה על סמך סוג שאילתה:
- בתגובה לשאילתה קטגורית כמו "מסעדות בתל אביב",
ברירת המחדל היא
.relevance
(דירוג התוצאות לפי רלוונטיות החיפוש). אפשר להגדיר אתrankPreference
לערך.relevance
או.distance
(דירוג התוצאות לפי מרחק). - לשאילתה ללא קטגוריה כמו 'Mountain View, CA', מומלץ
אם לא מגדירים את
rankPreference
.
- בתגובה לשאילתה קטגורית כמו "מסעדות בתל אביב",
ברירת המחדל היא
regionCode
קוד האזור שמשמש לעיצוב התשובה, מצוין בתור ערך CLDR בן שני תווים. לפרמטר הזה יכולה להיות גם אפקט הטיה בתוצאות החיפוש. אין ערך ברירת מחדל.
אם שם המדינה בשדה הכתובת בתשובה תואם את קידומת החיוג האזורית, קוד המדינה יושמט מהכתובת.
רוב קודי ה-CLDR זהים לקודי ISO 3166-1. עם כמה יוצאים מן הכלל. לדוגמה, ה-ccTLD של בריטניה הוא "uk" (.co.uk) כשקוד ISO 3166-1 הוא "gb" (טכנית עבור ישות "בריטניה וצפון אירלנד"). הפרמטר יכול להשפיע על התוצאות בהתאם לחוק הרלוונטי.
הצגת ייחוס באפליקציה
מתי האפליקציה מציגה מידע שהתקבל מ
GMSPlacesClient
כמו תמונות וביקורות, האפליקציה חייבת גם להציג את הייחוסים הנדרשים.
לדוגמה, המאפיין reviews
של האובייקט GMSPlacesClient
מכיל מערך של עד חמש
GMSPlaceReview
אובייקטים. כל אובייקט GMSPlaceReview
יכול להכיל ייחוס וייחוס של מחברים.
אם הביקורת מוצגת באפליקציה, צריך לציין גם ייחוס או מחבר
Attribution.
למידע נוסף, אפשר לקרוא את מאמרי העזרה בנושא שיוכים.