חיפוש טקסט (חדש)

בחירת פלטפורמה: Android iOS JavaScript שירות אינטרנט

חיפוש טקסט מחזיר מידע על קבוצה של מקומות בהתאם למחרוזת. לדוגמה, "פיצה בתל אביב", "חנויות נעליים בקרבת מקום" אוטווה", או "הרחוב הראשי 123". בתשובה של השירות מצוין רשימה של מקומות שתואמים למחרוזת הטקסט ולכל הטיית מיקום מוגדרת.

השירות שימושי במיוחד ליצירת כתובת לא ברורה שאילתות במערכת אוטומטית, ורכיבים שאינם כתובות של המחרוזת עשויים להתאים גם לעסקים וגם לעסקים. כתובות. דוגמאות לשאילתות כתובת לא חד-משמעיות הן כתובות בפורמט לא תקין או בקשות שכוללות רכיבים שאינם כתובות, כמו שמות עסקים. בקשות כמו שתי הדוגמאות הראשונות עשויות להחזיר אפס תוצאות, אלא אם מיקום (לדוגמה, אזור, הגבלת מיקום או הטיית מיקום) מוגדר.

"הרצל 10, בריטניה" או "הרצל 12, ישראל" מספר שירותי "היי סטריט" בבריטניה; מספר "רחובות ראשיים" בארה"ב. השאילתה לא מחזירה תוצאות רצויות, אלא אם הוגדרה הגבלת מיקום הוגדרה.
"מסעדה מסעדה תל אביב" כמה "מסעדות רשת" מיקומים בניו יורק; אין כתובת או אפילו שם הרחוב.
" 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.

למידע נוסף, אפשר לקרוא את מאמרי העזרה בנושא שיוכים.