במסמך הזה מתוארים פרמטרי הבקשה של Places Aggregate API, והוא כולל תובנות ושיטות מומלצות לשימוש בשירות הזה.
באמצעות Places Aggregate API אפשר לבצע כמה פונקציות חשובות:
- ספירת מקומות: קביעת מספר המקומות שתואמים לקריטריונים ספציפיים, כמו סוג המיקום, סטטוס הפעילות, רמת המחירים והדירוגים.
- אחזור פרטי מקום: קבלת שמות של מקומות שעומדים במסננים שצוינו, ואז אחזור של מידע מפורט יותר באמצעות Places API.
- סינון גמיש: אפשר להחיל מסננים מקיפים כדי לקבל נתונים מצטברים מדויקים. המסננים הזמינים כוללים את האפשרויות הבאות:
- אזור גיאוגרפי (עיגול, אזור או פוליגון בהתאמה אישית)
- סוגי מקומות
- סטטוס פעילות
- רמות מחירים
- טווחי דירוג
פרמטרים נדרשים
בקטע הזה מוסבר על הפרמטרים הנדרשים כשמנפיקים בקשה ל-Places Aggregate API. כל בקשה צריכה לכלול את הפרטים הבאים:
- סוג של תובנה.
- מסנן מיקום ומסנן סוג.
סוג התובנה
מציינים את סוג התובנה שרוצים לחשב. אלה סוגי התובנות שנתמכים:
-
INSIGHT_COUNT
: מחזירה את מספר המקומות שתואמים לקריטריוני הסינון. -
INSIGHT_PLACES
: מחזירה את מזהי המקומות שתואמים לקריטריוני הסינון.
מסננים
מציינת את הקריטריונים לסינון מקומות. צריך לציין לפחות את LocationFilter
ואת TypeFilter
.
מסנן מיקומים
מסנן מיקום יכול להיות אחד מהסוגים הבאים:
-
circle
: הגדרת אזור כמעגל עם מרכז ורדיוס. -
region
: מגדיר אזור כאזור. -
customArea
: הגדרה של אזור כמצולע מותאם אישית.
מעגל
אם בוחרים אזור גיאוגרפי בצורת עיגול, צריך לציין center
וradius
. הערך של center
יכול להיות קו רוחב וקו אורך, או מזהה המקום של מרכז העיגול. השיטה הזו מאפשרת סינון מדויק על סמך האזור המעגלי שהגדרתם.
center
:-
latLng
: קו הרוחב וקו האורך של מרכז העיגול. קווי הרוחב צריכים להיות מספר בין -90 ל-90, כולל. קו האורך חייב להיות מספר בין 180- ל-180, כולל. -
place
: מזהה המקום של מרכז העיגול. שימו לב: יש תמיכה רק בנקודות של מקומות. המחרוזת הזו חייבת להתחיל בקידומתplaces/
.
-
-
radius
: רדיוס העיגול במטרים. המספר חייב להיות חיובי.
אזור
כדי להגדיר את האזור כאזור, מעבירים מזהה מקום לפרמטר place
. מזהה המקום מייצג אזור גיאוגרפי (למשל אזור שאפשר לייצג באמצעות מצולע). לדוגמה, מזהה המקום של טמפה, פלורידה הוא places/ChIJ4dG5s4K3wogRY7SWr4kTX6c
. שימו לב שלא לכל מזהי המקומות יש גיאומטריה מוגדרת היטב, ובמקרים כאלה Places Aggregate API מחזיר קוד שגיאה 400 עם הודעה שמציינת שהאזור לא נתמך. בנוסף, באזורים גיאוגרפיים מורכבים, יכול להיות שאופטימיזציות פנימיות של העיבוד יובילו להערכת יתר קלה של האזור (עד 2-3%) שמייצג את האזור.
כדי לבדוק אם מזהה מקום מייצג סוג מקום שלא נתמך, מעבירים את מזהה המקום בבקשה ל-Geocoding API. התשובה כוללת את המערך type
שמפרט את סוגי המקומות שמשויכים למזהה המקום, כמו locality
, neighborhood
או country
. מקום יידחה בסינון לפי אזור אם אחד מסוגי המקומות שלו תואם לרשימה הזו.
סוגי מקומות שלא נתמכים:
-
establishment
: בדרך כלל מציין מקום שעדיין לא סווג. -
intersection
: מציין צומת גדול, בדרך כלל של שני כבישים ראשיים. -
subpremise
: מציין ישות שניתן להקצות לה כתובת מתחת לרמת הנכס, כמו דירה, יחידה או סוויטה.
אזור מותאם אישית
הגדרת השטח של פוליגון מותאם אישית באמצעות קואורדינטות של קו אורך וקו רוחב.
אפשר להיכנס לכתובת https://geojson.io/ כדי לצייר מצולע בהתאמה אישית ולהזין את הקואורדינטות שלו בבקשה. לפוליגון צריכות להיות לפחות 4 קואורדינטות, כשהקואורדינטות הראשונה והאחרונה זהות. לפחות 3 מהקואורדינטות שצוינו צריכות להיות ייחודיות.
קואורדינטות זהות ברצף ייחשבו כקואורדינטה אחת. עם זאת, קואורדינטות כפולות לא עוקבות (מלבד הקואורדינטות הראשונות והאחרונות הזהות הנדרשות) יובילו לשגיאה.
בנוסף, אסור שקצוות לא סמוכים יצטלבו, ואסור שקצוות באורך 180 מעלות יופיעו (כלומר, אסור שקודקודים סמוכים יהיו קודקודים אנטיפודיים).
לדוגמה:
"coordinates":[ { "latitude":37.776, "longitude":-122.666 }, { "latitude":37.130, "longitude":-121.898 }, { "latitude":37.326, "longitude":-121.598 }, { "latitude":37.912, "longitude":-122.247 }, { "latitude":37.776, "longitude":-122.666 } ]
מסנן סוגים
מציין את סוגי המקומות שרוצים לכלול או להחריג. רשימה של סוגי המקומות הראשיים והמשניים שנתמכים על ידי Places Aggregate API מופיעה בטבלה א' בקטע סוגי מקומות ב-Places API (חדש). צריך לציין לפחות סוג אחד של includedTypes
או includedPrimaryTypes
.
includedTypes
: רשימה של סוגי מקומות שנכללים.-
excludedTypes
: רשימה של סוגי מקומות שמוחרגים. -
includedPrimaryTypes
: רשימה של סוגי מקומות ראשיים שנכללים. excludedPrimaryTypes
: רשימה של סוגי מקומות ראשיים מוחרגים.
מידע נוסף על מסנני סוגים וסוגי מקומות זמין במאמר מידע נוסף על מסנני סוגים.
פרמטרים אופציונליים
המסננים האלה הם אופציונליים:
-
operatingStatus
: מציין את הסטטוסים של המקומות שרוצים לכלול או להחריג. ברירת המחדל היא סינון לפיoperatingStatus: OPERATING_STATUS_OPERATIONAL
(ערך ספציפי אחד). -
priceLevels
: מציין את רמות המחירים של המקומות שרוצים לכלול. כברירת מחדל, לא מוחל סינון לפי רמת מחיר, ומוחזרים כל המקומות (כולל אלה שלא מופיע בהם מידע על רמת המחיר). -
ratingFilter
: מציין את טווח הדירוגים של המקומות. ברירת המחדל היא ללא סינון (כל הדירוגים נכללים בתוצאות).
סטטוס פעילות
בעזרת המסנן operatingStatus
, אפשר לסנן לפי סטטוס הפעולה, כמו OPERATIONAL
או TEMPORARILY_CLOSED
. התנהגות המסנן operatingStatus
היא כזו:
- אם לא צוינו מסננים, התוצאות יכללו רק מקומות עם סטטוס פעילות של
OPERATING_STATUS_OPERATIONAL
. - אם מציינים מסנן אחד או יותר, צריך לציין ערכים תקינים של סטטוס פעילות (
OPERATING_STATUS_OPERATIONAL
,OPERATING_STATUS_PERMANENTLY_CLOSED
אוOPERATING_STATUS_TEMPORARILY_CLOSED
).
רמת מחירים
בעזרת המסנן priceLevels
אפשר לסנן מקומות לפי רמת המחיר שלהם. הערכים התקפים של רמת המחירים הם: PRICE_LEVEL_FREE
, PRICE_LEVEL_INEXPENSIVE
, PRICE_LEVEL_MODERATE
, PRICE_LEVEL_EXPENSIVE
ו-PRICE_LEVEL_VERY_EXPENSIVE
.
התנהגות המסנן priceLevels
היא כזו:
- אם לא מציינים מסננים: כל המקומות מוחזרים, גם אם לא הוקצה להם רמת מחיר. התוצאות כוללות מקומות ללא מידע על רמת המחירים, ולכן יכול להיות שהם לא יופיעו כשמסננים לפי רמות מחירים ספציפיות.
- אם מציינים מסנן אחד או יותר: הפונקציה מחזירה רק מקומות שתואמים לרמות המחירים שצוינו.
מסנן דירוג
מסננים מקומות לפי דירוגי המשתמשים הממוצעים שלהם. שני השדות האלה הם אופציונליים, ולכן אם לא תציינו אותם, ברירת המחדל תהיה גם הכללה של מקומות שלא קיבלו דירוג.
-
minRating
: הדירוג הממוצע המינימלי של המשתמשים (בין 1.0 ל-5.0). -
maxRating
: הדירוג הממוצע המקסימלי של המשתמשים (בין 1.0 ל-5.0).
בנוסף, הערך של minRating
תמיד צריך להיות קטן מהערך של maxRating
או שווה לו. אם הערך של minRating
גדול מהערך של maxRating
, הפונקציה תחזיר שגיאה מסוג INVALID_ARGUMENT
.