בקשה לחיפוש בסביבה (חדש) מקבלת כקלט את האזור לחיפוש, שמוגדר כמעגל לפי קואורדינטות קו הרוחב וקו האורך של נקודת המרכז של המעגל והרדיוס במטרים. הבקשה מחזירה רשימה של מקומות תואמים, שכל אחד מהם מיוצג על ידי אובייקט Place, בתוך אזור החיפוש שצוין.
כברירת מחדל, התגובה מכילה מקומות מכל הסוגים באזור החיפוש. אפשר גם לסנן את התגובה על ידי ציון רשימה של סוגי מקומות שרוצים לכלול בתגובה או להחריג ממנה באופן מפורש. לדוגמה, אפשר לציין לכלול בתגובה רק מקומות מסוג 'מסעדה', 'מאפייה' ו'בית קפה', או להחריג את כל המקומות מסוג 'בית ספר'.
בקשות של חיפוש בסביבה (חדש)
שולחים בקשה לחיפוש בסביבה הקרובה (חדש) באמצעות קריאה ל-PlacesClient.searchNearby, ומעבירים אובייקט SearchNearbyRequest שמגדיר את הפרמטרים של הבקשה.
אובייקט SearchNearbyRequest מציין את כל הפרמטרים הנדרשים והאופציונליים של הבקשה. הפרמטרים הנדרשים כוללים:
- רשימת השדות שיוחזרו באובייקט
Place, שנקראת גם מסכת שדות. אם לא תציינו לפחות שדה אחד ברשימת השדות, או אם תשמיטו את רשימת השדות, הקריאה תחזיר שגיאה. - הגבלת המיקום של אזור החיפוש, שמוגדרת כזוג של קו רוחב וקו אורך וערך רדיוס במטרים.
בדוגמה הזו, בקשת החיפוש בסביבה הקרובה מציינת שאובייקטי Place בתגובה מכילים את שדות המקום Place.Field.ID ו-Place.Field.DISPLAY_NAME לכל אובייקט Place בתוצאות החיפוש. היא גם מסננת את התגובה כך שיוחזרו רק מקומות מהסוגים "מסעדה" ו "בית קפה", אבל לא מקומות מהסוגים "פיצרייה" ו "מסעדה אמריקאית".
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
תשובות של חיפוש בסביבה (חדש)
המחלקות
SearchNearbyResponse
מייצגות את התגובה לבקשת חיפוש. אובייקט SearchNearbyResponse מכיל:
- רשימה של אובייקטים מסוג
Placeשמייצגים את כל המקומות התואמים, עם אובייקט אחד מסוגPlaceלכל מקום תואם. - כל אובייקט
Placeמכיל רק את השדות שמוגדרים ברשימת השדות שמועברת בבקשה.
לדוגמה, בבקשה הגדרתם רשימת שדות כך:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
רשימת השדות הזו מציינת שכל אובייקט Place בתגובה מכיל רק את מזהה המקום ואת השם של כל מקום תואם. אחר כך אפשר להשתמש ב-methods Place.getId() ו-Place.getName() כדי לגשת לשדות האלה בכל אובייקט Place.
דוגמאות נוספות לגישה לנתונים באובייקט Place מפורטות במאמר גישה לשדות הנתונים של אובייקט Place.
פרמטרים נדרשים
משתמשים באובייקט
SearchNearbyRequest
כדי לציין את הפרמטרים הנדרשים לחיפוש.
רשימת שדות
כשמבקשים פרטי מקום, צריך לציין את הנתונים שיוחזרו באובייקט
Placeשל המקום כמסכת שדות. כדי להגדיר את מסכת השדות, מעבירים מערך של ערכים מ-Place.FieldלאובייקטSearchNearbyRequest. הסתרת שדות היא שיטה טובה לוודא שלא מבקשים נתונים מיותרים, וכך להימנע מזמן עיבוד מיותר ומחיובים מיותרים.מציינים אחד או יותר מהשדות הבאים:
השדות הבאים מפעילים את מהדורת Nearby Search Pro:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* צריך להשתמש במקוםPlace.Field.NAME, שהוצא משימוש.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* צריך להשתמש במקוםPlace.Field.ICON_URL, שהוצא משימוש.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCEהרשימה המלאה של השדות והמקט"ים שמשויכים אליהם מופיעה במאמר בנושא שדות של נתוני מקומות (חדש).
השדות הבאים מפעילים את חיפוש בסביבה Enterprise מק"ט:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* אפשר להשתמש במקוםPlace.Field.PHONE_NUMBER, שהוצא משימוש.
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT*
* צריך להשתמש במקוםPlace.Field.USER_RATINGS_TOTAL, שהוצא משימוש.
Place.Field.WEBSITE_URIרשימה מלאה של השדות והמק"טים המשויכים אליהם מופיעה במאמר בנושא שדות של נתוני מקומות (חדש).
השדות הבאים מפעילים את חיפוש בסביבה Enterprise Plus מק"ט:
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
Place.Field.SERVES_DINNER
Place.Field.SERVES_LUNCH
Place.Field.SERVES_VEGETARIAN_FOOD
Place.Field.SERVES_WINE
Place.Field.TAKEOUTרשימה מלאה של השדות והמק"טים המשויכים אליהם מופיעה במאמר בנושא שדות של נתוני מקומות (חדש).
כדי להגדיר את הפרמטר של רשימת השדות, צריך להפעיל את ה-method
setPlaceFields()כשיוצרים את האובייקטSearchNearbyRequest.בדוגמה הבאה מוגדרת רשימה של שני ערכי שדות, כדי לציין שהאובייקט
Placeשמוחזר על ידי בקשה מכיל את השדותPlace.Field.IDו-Place.Field.DISPLAY_NAME:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
הגבלת מיקום
אובייקט מסוג
LocationRestrictionשמגדיר את האזור לחיפוש כמעגל, שמוגדר לפי נקודת מרכז ורדיוס במטרים. הרדיוס צריך להיות גדול מ-0.0 וקטן מ-50,000.0 או שווה לו. חשוב לזכור שאם תציינו רדיוס קטן מדי, התשובה שתקבלו תהיהZERO_RESULTS.כדי להגדיר את פרמטר הגבלת המיקום, צריך לבצע קריאה ל-method
setLocationRestriction()כשיוצרים את האובייקטSearchNearbyRequest.
פרמטרים אופציונליים
משתמשים באובייקט
SearchNearbyRequest
כדי לציין את הפרמטרים האופציונליים של החיפוש.
-
סוגים וסוגים ראשיים
מאפשר לציין רשימה של סוגים מתוך הסוגים בטבלה א' שמשמשים לסינון תוצאות החיפוש. אפשר לציין עד 50 סוגים בכל קטגוריה מוגבלת של סוג.
לכל מקום יכול להיות רק סוג ראשי אחד מהסוגים שמופיעים בטבלה א'. לדוגמה, הסוג הראשי יכול להיות
"mexican_restaurant"או"steak_house". משתמשים ב-includedPrimaryTypesוב-excludedPrimaryTypesכדי לסנן את התוצאות לפי הסוג הראשי של המקום.למקום יכולים להיות גם כמה ערכי סוג מהסוגים טבלה א' שמשויכים אליו. לדוגמה, יכול להיות שלמסעדה יהיו הסוגים הבאים:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". אפשר להשתמש בלחצניםincludedTypesוexcludedTypesכדי לסנן את התוצאות ברשימת הסוגים שמשויכים למקום.כשמציינים סוג ראשי כללי, כמו
"restaurant"או"hotel", התשובה יכולה להכיל מקומות עם סוג ראשי ספציפי יותר מזה שצוין. לדוגמה, אתם מציינים שאתם רוצים לכלול את הסוג הראשי"restaurant". התשובה יכולה להכיל מקומות עם סוג ראשי של"restaurant", אבל היא יכולה גם להכיל מקומות עם סוג ראשי ספציפי יותר, כמו"chinese_restaurant"או"seafood_restaurant".אם בחיפוש מצוינות כמה הגבלות סוג, יוחזרו רק מקומות שעומדים בכל ההגבלות. לדוגמה, אם מציינים את הערכים
includedTypes = Arrays.asList("restaurant")ו-excludedPrimaryTypes = Arrays.asList("steak_house"), המקומות שיוחזרו מספקים שירותים שקשורים ל-"restaurant"אבל לא פועלים בעיקר בתור"steak_house".דוגמה לשימוש ב-
includedTypesוב-excludedTypesמופיעה בקטע בקשות לחיפוש בסביבה (חדש).סוגים כלולים
רשימה של סוגי המקומות מטבלה א' לחיפוש. אם לא מציינים את הפרמטר הזה, הפונקציה מחזירה מקומות מכל הסוגים.
כדי להגדיר את הפרמטר included_types, צריך לבצע קריאה ל-method
setIncludedTypes()כשיוצרים את האובייקטSearchNearbyRequest.סוגים מוחרגים
רשימה של סוגי מקומות מטבלה א' שרוצים להחריג מהחיפוש.
אם מציינים בבקשה גם את
includedTypes(למשל"school") וגם אתexcludedTypes(למשל"primary_school"), התגובה כוללת מקומות שמסווגים כ-"school"אבל לא כ-"primary_school". התשובה כוללת מקומות שתואמים לפחות לאחד מהערכיםincludedTypesולאף אחד מהערכיםexcludedTypes.אם יש סוגים מתנגשים, למשל סוג שמופיע גם ב-
includedTypesוגם ב-excludedTypes, תוחזר שגיאתINVALID_REQUEST.כדי להגדיר את הפרמטר של הסוגים שלא נכללים, צריך להפעיל את ה-method
setExcludedTypes()כשיוצרים את האובייקטSearchNearbyRequest.סוגי החשבונות הראשיים שכלולים
רשימה של סוגי מקומות ראשיים מטבלה א' שרוצים לכלול בחיפוש.
כדי להגדיר את הפרמטר של הסוגים הראשיים הכלולים, מפעילים את ה-method
setIncludedPrimaryTypes()כשיוצרים את האובייקטSearchNearbyRequest.סוגים ראשיים שהוחרגו
רשימה של סוגי מקומות ראשיים מטבלה א' שרוצים להחריג מהחיפוש.
אם יש סוגים ראשיים שמתנגשים, למשל סוג שמופיע גם ב-
includedPrimaryTypesוגם ב-excludedPrimaryTypes, תוחזר השגיאהINVALID_ARGUMENT.כדי להגדיר את הפרמטר של סוגי המקומות הראשיים שרוצים להחריג, מפעילים את ה-method
setExcludedPrimaryTypes()כשיוצרים את האובייקטSearchNearbyRequest. -
מספר התוצאות המקסימלי
מציין את המספר המקסימלי של תוצאות של מקומות שיוחזרו. הערך צריך להיות בין 1 ל-20 (ברירת מחדל), כולל.
כדי להגדיר את הפרמטר של מספר התוצאות המקסימלי, צריך להפעיל את ה-method
setMaxResultCount()כשיוצרים את האובייקטSearchNearbyRequest. -
העדפת דירוג
סוג הדירוג שבו רוצים להשתמש. אם הפרמטר הזה מושמט, התוצאות מדורגות לפי פופולריות. יכול להיות אחת מהאפשרויות הבאות:
-
POPULARITY(ברירת מחדל) התוצאות ממוינות לפי הפופולריות שלהן. -
DISTANCEמיון התוצאות בסדר עולה לפי המרחק שלהן מהמיקום שצוין.
כדי להגדיר את הפרמטר של העדפת הדירוג, צריך להפעיל את ה-method
setRankPreference()כשיוצרים את האובייקטSearchNearbyRequest. -
-
קוד אזור
קוד האזור שמשמש לעיצוב התשובה, שמוגדר כערך של קוד CLDR באורך שני תווים. אין ערך ברירת מחדל.
אם שם המדינה בשדה
FORMATTED_ADDRESSבתגובה תואם ל-regionCode, קוד המדינה מושמט מ-FORMATTED_ADDRESS.רוב קודי ה-CLDR זהים לקודי ISO 3166-1, עם כמה חריגים בולטים. לדוגמה, ה-ccTLD של בריטניה הוא uk (.co.uk), אבל קוד ISO 3166-1 שלה הוא gb (טכנית, עבור הישות 'בריטניה וצפון אירלנד'). הפרמטר יכול להשפיע על התוצאות בהתאם לדין החל.
כדי להגדיר את פרמטר קוד האזור, צריך לבצע קריאה ל-method
setRegionCode()כשיוצרים את האובייקטSearchNearbyRequest.
הצגת השיוך באפליקציה
אם האפליקציה מציגה מידע שהתקבל מ-PlacesClient, כמו תמונות וביקורות, היא צריכה להציג גם את הקרדיטים הנדרשים.
מידע נוסף זמין במאמר המדיניות של Places SDK ל-Android.