לפני שממשיכים לקטע הזה, אם עדיין לא עשיתם זאת, עליכם לבדוק את מערכות המיקרו-ניידות הנתמכות ושבהן אתם יוצרים את הפיד.
בקטעים הבאים, יש לכל כותרת את הפורמט הבא:
Required|Optional|Conditionally required: Feed name (System supported)
. יש תמיכה במערכות הבאות:
- מערכת עגינה
- מערכת עגינה
- מערכת עגינה ואביזר עגינה
כדי שהאפליקציה תשתלב עם Google בהצלחה, עליכם לספק רק את הקבצים הדרושים למערכת שהפיד מתאר, ולציין את שדות החובה בסעיפים הרלוונטיים. לשדות חובה המותנים בתנאים, יש לעיין בתיאור השדה. ניתן גם לציין שדות אופציונליים שמוסיפים מידע ומספקים חוויית משתמש טובה יותר.
כותרת נדרשת לפידים של מיקרו ניידות
פידים של מיקרו ניידות הם פידים שמכילים נתונים מובְנים של אביזר עגינה או ללא עגינה, כפי שמוגדר במאמר זה.
כל הפידים תמיד צריכים לציין את השדות הכלולים בטבלה הבאה ברמה העליונה של אובייקט ה-JSON, שנקרא בשם כותרת GBFS נפוצה.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
last_updated |
Timestamp | נדרש | חותמת זמן של POSIX, המציינת מספר שניות מאז
1 בינואר 1970 00:00:00 UTC.
הגדרת הפעם האחרונה שהנתונים בפיד עודכנו. |
ttl |
מספר שלם לא שלילי | נדרש | מספר שלם לא שלילי שמייצג את מספר השניות
שנותרו עד לסיום העדכון.
אם צריך לעדכן את הנתונים בשיעור קבוע, יש להגדיר את הערך
|
data |
JSON | נדרש | קובץ JSON המכיל את שדות הנתונים של הפיד הספציפי. |
לדוגמה, פיד free_bike_status.json
מצטבר שמציינת את הכותרתGBFS נפוצה יכול להיות:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
חובה: System_information.json (מערכת עגינה ואביזר עגינה)
אפשר לעיין במפרט של GBFS.
הפיד הזה מספק פרטים לגבי מפעיל המערכת.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
system_id |
אינדונזיה | נדרש | מזהה ייחודי גלובלי של מערכת שיתוף הרכב. הערך הזה נועד להישאר ללא שינוי לאורך חיי המערכת. לכל מערכת או אזור גיאוגרפי נפרדים שבהם כלי הרכב מופעלים יש להקצות מזהה מערכת משלו. מזהי מערכת צריכים להיות מזוהים כמוצרים ששייכים למערכת מסוימת, ולא כמחרוזות אקראיות. לדוגמה, bcycle_austin או Bikeטאון_pdx. |
name |
מחרוזת | נדרש | שם המערכת, שמוצג ללקוחות. |
rental_apps |
פריט | נדרש | אובייקט JSON שמכיל את הפרטים של אפליקציית ההשאלה ל-Android ול-iOS בשדות המתאימים. |
rental_apps.android |
פריט | נדרש תנאי |
מכיל מידע על השכרות והורדות של אפליקציות להשכרה עבור פלטפורמת Android בשדות store_uri ו-discovery_uri . אם לספק המערכת יש אפליקציה להשכרת Android, השדה הזה הוא חובה.
|
rental_apps.android.store_uri |
URI | נדרש | URI שממנו ניתן להוריד את אפליקציית Android להשכרה. זהו בדרך כלל URI של חנות אפליקציות כמו Google Play. אם ה-URI מפנה לחנות כמו Google Play, מומלץ להשתמש ב-URI בהתאם לשיטות המומלצות ל-Android. כך, אפליקציית ה-URI תוכל לפתוח את ה-URI ישירות לאפליקציה של חנות האפליקציות במקום באתר. |
rental_apps.android.discovery_uri |
URI | נדרש | URI בפורמט your_custom_scheme://your/path/here .
ה-URI יכול לשמש את PackageManager.queryIntentActivities() כדי לבדוק אם האפליקציה ל-Android שהושכרה מותקנת במכשיר.
|
rental_apps.ios |
פריט | נדרש תנאי | מכיל מידע על השכרות והורדות של אפליקציות להשכרה עבור פלטפורמת iOS בשדות store_uri ו-discovery_uri . אם לספק המערכת יש אפליקציה להשכרת iOS, השדה הזה הוא חובה.
|
rental_apps.ios.store_uri |
URI | נדרש | URI שממנו ניתן להוריד את אפליקציית iOS להשאלה. בדרך כלל זהו URI של חנות אפליקציות כמו Apple App Store. אם ה-URI מפנה לחנות אפליקציות כמו Apple App Store, מומלץ להשתמש ב-URI בהתאם לשיטות המומלצות ל-iOS, כדי שאפליקציית התצוגה תוכל לפתוח את ה-URI ישירות לאפליקציה של חנות האפליקציות המקורית במקום לאתר. |
rental_apps.ios.discovery_uri |
URI | נדרש | URI בפורמט your_custom_scheme:// . ה-URI יכול לשמש את UIApplication canOpenURL: כדי לבדוק אם האפליקציה ל-iOS שהושכרה מותקנת במכשיר.
|
חובה: free_bike_status.json (מערכת ללא אביזר עגינה)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את המיקומים והמאפיינים של כלי רכב עצמאיים. מטעמי פרטיות, אסור להציג בפיד הזה כלי רכב שהם חלק מהשכרה פעילה.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
bikes |
מערך | נדרש | מערך זמין של אופניים שהופסקו, כאשר כל אופנוע הוא אובייקט. |
bikes[].bike_id |
אינדונזיה | נדרש | המזהה של אופניים.
כדי להגן על הפרטיות, אפשר לשנות את המזהה למחרוזת אקראית אחרי כל נסיעה. |
bikes[].lat |
קו רוחב | נדרש | קו הרוחב של האופניים WGS 84, בפורמט מעלות עשרוניות. |
bikes[].lon |
קו אורך | נדרש | קו האורך 84 של ה-WGS בפורמט האופניים. |
bikes[].is_reserved |
בוליאני | נדרש | אם האופניים שמורים כרגע, באופן הבא:
|
bikes[].is_disabled |
בוליאני | נדרש | אם האופניים מושבתים או מנותקים כרגע, כך:
|
bikes[].rental_uris |
פריט | נדרש | אובייקט JSON שמכיל URI של השכרה ל-Android, ל-iOS ולאינטרנט בשדות המתאימים. |
bikes[].rental_uris.android |
URI | נדרש תנאי | URI שניתן להעביר לאפליקציה ל-Android עם
כוונה של android.intent.action.VIEW לקבלת תמיכה ב-Android
קישורי עומק ל-Android. הרכיב rental_uris חייב להיות
קישורים לאפליקציה ל-Android, כדי שאפליקציית הצפייה לא תצטרך לנהל באופן ידני את ההפניה האוטומטית של המשתמש לחנות האפליקציות במקרה שהאפליקציה לא מותקנת אצל הספק.
ה-URI הזה צריך להיות קישור עומק ספציפי לאופניים, ולא דף השכרה כללי שכולל מידע על יותר מאופנוע אחד. קישור העומק חייב להעביר את המשתמש ישירות לאופניים ללא בקשות, דפי ביניים או פרטי התחברות. מוודאים שהמשתמשים יכולים לראות את האופניים גם אם האפליקציה מעולם לא נפתחה. מזהי URI לא חייבים לכלול את אם לשותף יש אפליקציה להשכרת Android, חובה למלא את השדה הזה. דוגמה לקישורים לאפליקציות ל-Android:
|
bikes[].rental_uris.ios |
URI | נדרש תנאי | URI שניתן להשתמש בו ב-iOS כדי להפעיל את אפליקציית ההשאלה לאופניים.
למידע נוסף בנושא זה, ניתן לעיין במאמר של Apple בנושא #
סכמות של כתובות URL מותאמות אישית ב-iOS.
הרכיב rental_uris חייב להיות
קישורים אוניברסליים ל-iOS, כדי שאפליקציית הצפייה לא תצטרך לנהל באופן ידני את ההפניה האוטומטית של המשתמש לחנות האפליקציות במקרה שלא הותקנה אפליקציית הספק על ידי המשתמש.
ה-URI הזה צריך להיות קישור עומק ספציפי לאופניים, ולא דף השכרה כללי שכולל מידע על יותר מאופנוע אחד. קישור העומק חייב להעביר את המשתמש ישירות לאופניים ללא בקשות, דפי ביניים או פרטי התחברות. מוודאים שהמשתמשים יכולים לראות את האופניים גם אם האפליקציה מעולם לא נפתחה. מזהי URI לא חייבים לכלול את האופניים [id_id] עבור האופניים, כל עוד לשותף יש אמצעי זיהוי אחרים. לדוגמה, אפליקציית ההשאלה יכולה להשתמש במזהים אחרים בתוך ה-URI כדי לזהות את האופניים באופן ייחודי. אם לשותף יש אפליקציה להשכרת iOS, חובה למלא את השדה הזה. דוגמה לקישורים אוניברסליים ל-iOS:
|
bikes[].rental_uris.web |
כתובת URL | אופציונלי | כתובת URL לשימוש בדפדפן אינטרנט כדי להציג מידע נוסף על השכרת רכב ברכב הזה. כתובת ה-URL הזו חייבת להיות קישור עומק ספציפי לאופניים הספציפיים, ולא דף השכרה כללי שכולל מידע לגבי יותר מאופנוע אחד. קישור העומק חייב להעביר את המשתמש ישירות לאופניים ללא בקשות, דפי ביניים או פרטי התחברות. מוודאים שהמשתמשים יכולים לראות את האופניים גם אם האפליקציה מעולם לא נפתחה. כתובות URL לא חייבות לכלול את אם השדה הזה לא מוגדר, המשמעות היא שאין תמיכה בקישורי עומק בדפדפן האינטרנט. ערך לדוגמה:
|
bikes[].vehicle_type_id |
אינדונזיה | נדרש | vehicle_type_id של כלי הרכב, כפי שמתואר בקטע
vehicle_types.json .
|
bikes[].pricing_plan_id |
אינדונזיה | נדרש | המזהה של תוכנית התמחור והתשלומים כאשר רכב זה מושכר
כפי שמתואר בסעיף
system_pricing_plans.json .
|
bikes[].current_range_meters |
צף לא שלילי | נדרש תנאי | אם המדיניות vehicle_type מתאימה לרכב, חובה למלא את השדה הזה.
מוגדר למרחק הארוך ביותר במטרים שבהם הרכב יכול לנסוע ללא צורך בטעינה או בדלק, בתנאי הטעינה או רמת הדלק הנוכחיים של הרכב. |
bikes[].last_reported |
Timestamp | אופציונלי | מגדירים את הפעם האחרונה ש הרכב דיווח על הסטטוס שלו לקצה העורפי של האופרטור. |
הנה דוגמה עבור free_bike_status.json
:
"bikes": [{
"bike_id": "xyz123",
"lat": 12.34,
"lon": 56.78,
"is_reserved": true,
"is_disabled": false,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "scooter_electric",
"pricing_plan_id": "sydneyPlan1",
"current_range_meters": 4500,
"last_reported": 1434054678
},
{
"bike_id": "abc123",
"lat": 1.34,
"lon": 146.78,
"is_reserved": false,
"is_disabled": true,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "bike_manual",
"pricing_plan_id": "sydneyPlan1",
"last_reported": 1434054241
}
]
חובה: Vehicle_types.json (מערכת עגינה ואביזר עגינה)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את הפרטים של סוגי הרכבים השונים, כפי שמוסבר בקטע
free_bike_status.json
.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
vehicle_types |
מערך | נדרש | מערך של אובייקטים, שבו כל אובייקט מגדיר סוג רכב ייחודי בקטלוג של הספק. לכל רכב יכול להיות רק אובייקט אחד. |
vehicle_types[].vehicle_type_id |
אינדונזיה | נדרש | מזהה ייחודי לסוג רכב נתון. |
vehicle_types[].form_factor |
טיפוסים בני מנייה (Enum) | נדרש | אינום שמייצג את גורם הצורה הכללי של הרכב, מתוך
רשימת הערכים החוקיים הנוכחית:
|
vehicle_types[].propulsion_type |
טיפוסים בני מנייה (Enum) | נדרש | טיפוסים בני מנייה (enum) שמייצגים את סוג ההנעה הראשי של הרכב, מתוך רשימת הערכים החוקיים הנוכחיים:
|
vehicle_types[].max_range_meters |
צף לא שלילי | נדרש תנאי | אם הערך של propulsion_type לא מוגדר כ-human ,
לרכב יש מנוע, ולכן השדה הזה נדרש.
יש להגדיר את המרחק הארוך ביותר במטרים שבהם הרכב יכול לנסוע ללא צורך בטעינה או בדלק, כשהרכב דלק או טעון במלואו. |
הנה דוגמה עבור vehicle_types.json
:
"vehicle_types": [
{
"vehicle_type_id": "bike_manual",
"form_factor": "bicycle",
"propulsion_type": "human"
},
{
"vehicle_type_id": "scooter_electric",
"form_factor": "scooter",
"propulsion_type": "electric",
"max_range_meters": 10000
}
]
חובה: system_pricing_plans.json (מערכת ללא אביזר)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את תוכניות המחירים של הרכבים הנפרדים. אנחנו דורשים מהספקים להציג מידע על מחיר של רכבים עצמאיים.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
plans |
מערך | נדרש | מערך של אובייקטים שבו כל אובייקט מגדיר תוכנית מחיר נתונה. |
plans[].plan_id |
אינדונזיה | נדרש | מחרוזת שמייצגת מזהה ייחודי של תוכנית התמחור והתשלומים שהספק מציע. |
plans[].url |
כתובת URL | אופציונלי | כתובת ה-URL שמפנה את משתמשי הקצה למידע נוסף על תוכנית המחירים. |
plans[].currency |
מחרוזת | נדרש | תקן ISO 4217 לתוכנית התמחור והתשלומים. |
plans[].price |
צף לא שלילי | נדרש |
יש להגדיר את תוכנית התמחור והתשלומים כתוכנית מחיר ללא דירוג או כמחירון:
|
plans[].per_km_pricing |
מערך | נדרש תנאי |
אם המחיר הוא פונקציה של מרחק הנסיעה, שמוצג בקילומטרים, חובה למלא את השדה הזה. מערך של אובייקטים שבו כל אובייקט מגדיר פלח נתון שחלוקתו למרחק. הערך של כל פלח כדי לקבוע את המחיר הכולל של התוכנית הנתונה, יש להוסיף את הערך הנתון של תוכנית ##39;s
אם השדה הזה לא מוגדר, אין מחירים משתנים בהתאם למרחק, ולכן אף אחד מהם לא כלול במחיר הכולל. |
plans[].per_km_pricing[].start |
מספר שלם לא שלילי | נדרש |
מספר הקילומטרים שבו מתחיל שיעור הפילוח.
השדה הזה מוגדר
כערך כולל
שמתחיל את הטווח של הפלח. כך, לאחר שחלף מספר הקילומטרים, rate מחויב פעם אחת.
|
plans[].per_km_pricing[].rate |
מספר ממשי (Float) | נדרש | התעריף שבו מתבצע החיוב עבור כל interval , שמתחיל
ב-start שכלול בפלח. אם בשדה הזה מוגדר מספר שלילי, המשתמש יקבל הנחה.
|
plans[].per_km_pricing[].interval |
מספר שלם לא שלילי | נדרש |
המרווח בקילומטרים שבו
אם הערך של אם השדה הזה מוגדר לערך |
plans[].per_km_pricing[].end |
מספר שלם לא שלילי | אופציונלי |
מספר הקילומטרים שבו הנקודה אם השדה הזה לא מוגדר או ריק, המאפיין |
plans[].per_min_pricing |
מערך | נדרש תנאי |
אם המחיר הוא פונקציה של זמן שחלף, המוצגת בדקות, חובה למלא את השדה הזה. מערך של אובייקטים שבו כל אובייקט מגדיר פלח נתון חלקי זמן. כל ערך של פלח כדי לקבוע את המחיר הכולל של התוכנית הנתונה, יש להוסיף את הערך הנתון של תוכנית ##39;s
אם השדה הזה לא מוגדר, אין מחירים משתנים המבוססים על זמן, ולכן אף אחד מהם לא נכלל במחיר הכולל. |
plans[].per_min_pricing[].start |
מספר ממשי (Float) | נדרש |
מספר הדקות שבהן החיוב על שיעור הפילוח מתחיל.
השדה הזה מוגדר
כערך כולל
שמתחיל את הטווח של הפלח. כלומר, לאחר מספר הדקות שהוגדר, rate יחויב פעם אחת.
|
plans[].per_min_pricing[].rate |
מספר ממשי (Float) | נדרש | התעריף שבו אנחנו מחייבים עבור כל interval . התעריף מתחיל
ב-start , הכולל את הפלח. אם השדה הזה מוגדר למספר שלילי, הנוסע יקבל הנחה.
|
plans[].per_min_pricing[].interval |
מספר שלם לא שלילי | נדרש |
המרווח בדקות שבו
אם הערך של אם השדה הזה מוגדר לערך |
plans[].per_min_pricing[].end |
מספר שלם לא שלילי | אופציונלי |
מספר הדקות שבהן ה- אם השדה הזה לא מוגדר או ריק, |
דוגמאות למערכת system_pricing_plans.json
בקטע הזה מוצגות דוגמאות קוד של system_pricing_plans.json
. בנוסף, מוצגים כל הפרטים והתוצאות הרלוונטיים.
דוגמה 1 ל-system_pricing_plans.json
בדוגמה הבאה של קוד תוכנית התמחור והתשלומים מוצגים בהתאם למועד הנסיעה במרווחים הבאים:
- [0,1] $2 USD
- אם הנסיעה נמשכת פחות מדקה, המשתמש משלם 8 ש"ח.
- דוגמה: נסיעה של 59 שניות
- [1,2] $3 USD
- אם המסלול ארוך יותר או שווה לדקה אחת, אבל פחות מ-2 דקות, המשתמש משלם 8 ש"ח + 4 ש"ח = 12 ש"ח.
- דוגמאות: נסיעה למשך דקה אחת, נסיעה של 15 דקות באורך 45 שניות
- x מספר הדקות שבו x גדול מ-2 או שווה ל-2:
12 ש"ח + (8 ש"ח + 4 ש"ח) * (x - 2 + 1))
דולר ארה"ב
- אם המסלול ארוך יותר או שווה ל-2 דקות, המשתמש משלם 12 ש"ח על החלק הזה של הנסיעה פחות מ-2 דקות, ואז (4 ש"ח [המשך מהרשומה הראשונה ברשימה
per_min_pricing
] + 8 ש"ח [הכניסה השנייה ברשימה שלper_min_pricing
]) לכל דקה אחרי ההכללה של שתי דקות. - דוגמאות:
- עלות הנסיעה למשך 2 דקות היא 12 ש"ח + (8 ש"ח + 4 ש"ח) = 24 ש"ח
- 2 דקות בנות 30 שניות, עלות 12 ש"ח + (8 ש"ח + 4 ש"ח) = 24 ש"ח
- 3 דקות הליכה, עלות 12 ש"ח + ((8 ש"ח + 4 ש"ח) * 2) = 36 ש"ח
- עלות הנסיעה: 10 דקות + 12 ש"ח + (8 ש"ח + 4 ש"ח) * 9) = 120 ש"ח
- אם המסלול ארוך יותר או שווה ל-2 דקות, המשתמש משלם 12 ש"ח על החלק הזה של הנסיעה פחות מ-2 דקות, ואז (4 ש"ח [המשך מהרשומה הראשונה ברשימה
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
דוגמה 2 עבור system_pricing_plans.json
בדוגמה הזו אנחנו מציגים דוגמת קוד של תוכנית תמחור ותשלומים שחויבה בשיעור של דקות וקילומטרים:
- באופן ספציפי, משתמש הקצה מחויב ב-0.25 דולר קנדי לק"מ, וגם ב-0.50 דולר קנדי לדקה.
- שני המחירים האלה מתרחשים בו-זמנית ואינם תלויים זה בזה.
- לכן, נסיעה של קילומטר אחד שנמשכת 10 דקות עולה 9 דולר קנדי. פירוט העלויות הוא:
- 12 ש"ח, מחיר בסיסי
- 0.25 דולר ארה"ב * 2, שחויב פעם אחת בתחילת הנסיעה ופעם אחת במרחק של ק"מ אחד.
- $0.5 * 11, החיוב מתבצע פעם אחת בתחילת כל דקה. החיובים מתחילים ב-0 שניות, ומרווח הזמן האחרון מסתיים ב-10 דקות.
{
"plans": {
"plan_id": "plan2",
"currency": "CAD",
"price": 3,
"per_km_pricing": [{
"start": 0,
"rate": 0.25,
"interval": 1
}],
"per_min_pricing": [{
"start": 0,
"rate": 0.50,
"interval": 1
}]
}
}
חובה לפי תנאי: Geofbidding_zones.json (מערכת עגינה ואביזר עגינה)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את נתוני הגידור הגיאוגרפי של כלי רכב עצמאיים. נתוני גבולות וירטואליים כוללים את הגבולות הגיאוגרפיים שמציינים היכן מותר לכלי הרכב להתחיל את הנסיעה ולסיים אותה, לצד המהירות שבה הרכבים יכולים לנסוע. המהירות הזו היא המהירות המקסימלית של הרכב או המהירות שלו. הנהגים חייבים לציית לחוקים ולחוקים מקומיים.
אנחנו משתמשים בנתונים האלה כך שכאשר משתמש מחפש מסלול מסוים, אם סוף הנסיעה חורג מגבולות הגיאוגרפיים הספציפיים, התוצאה של 'ניידות' מסוננת. אם לא צוינו גבולות וירטואליים, Google מתייחסת לשירות כאילו אין הגבלות על גבולות.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
geofencing_zones |
פריט | נדרש | אובייקט FeatureCollection כמתואר ב-
IETF RFC 7946 הוא אובייקט שיש לו שדה, בשם
features . הערך של features הוא מערך JSON.
כל רכיב במערך JSON הוא אובייקט Feature .
כל אזור עם גבולות גיאוגרפיים, הכללים והמאפיינים המשויכים אליו, וההגדרות של |
geofencing_zones.type |
מחרוזת | נדרש | מוגדר ל-FeatureCollection כפי שמתואר ב-
IETF RFC 7946. |
geofencing_zones.features |
מערך | נדרש | מערך JSON, שבו כל רכיב במערך JSON הוא אובייקט
Feature . |
geofencing_zones.features[].type |
מחרוזת | נדרש | מוגדר ל-Feature כפי שמתואר ב-
IETF RFC 7946. |
geofencing_zones.features[].geometry |
רב-מצולע גיאוגרפי | נדרש | ריבוי פוליגונים גיאוגרפי, שמתאר היכן המתקנים לא יכולים להתחיל, להסתיים, לעבור, בנוסף למגבלות אחרות. סידור לפי נקודות בכיוון השעון מגדיר את האזור שמוקף בפוליגון, וסדר נגד כיוון השעון מגדיר את האזור מחוץ לפוליגון. ניתן לקבל מידע נוסף בנושא בכלל שבצד שמאל. |
geofencing_zones.features[].properties |
פריט | נדרש | אובייקט המגדיר את המגבלות והמגבלות על הנסיעה. |
geofencing_zones.features[].properties.rules |
מערך | אופציונלי | מערך של אובייקטים, שבו כל אובייקט מגדיר כלל אחד בלבד. אם שני כללים או יותר חופפים, מתנגשים או מתנגשים בדרך אחרת, הכלל שהוגדר המוקדם ביותר לפי הסדר של קובץ ה-JSON מקבל עדיפות. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
מערך | אופציונלי | מערך של מזהי סוגי רכבים, שבהם כל רכיב הוא vehicle_type_id , שעליו יש להחיל הגבלות כלשהן.
אם לא מציינים את vehicle_type_id , ההגבלות
יחולו על כל סוגי הרכבים. |
geofencing_zones.features[].properties.rules[].ride_allowed |
בוליאני | נדרש | האם ה&תושבת לעמוד;"ללא מתקן" רכיבה על אופניים יכולה להתחיל ולהסתיים באזור, כך:
|
הנה דוגמה עבור geofencing_zones.json
:
"geofencing_zones":{
"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":{
"rules":[{
"vehicle_type_id":"scooter",
"ride_allowed": false
}]
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[
[-122.66780376434326, 45.49896266763551],
[-122.66810417175292, 45.49824825558575],
[-122.66830801963805, 45.49632305799116],
[-122.66780376434326, 45.49896266763551]
]]]
}
}]
}
חובה: station_information.json (מערכת מוצמדת)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את המידע הכללי על תחנות שיתוף אופניים ציבוריות.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
stations |
מערך | נדרש | מערך של אובייקטים שבו כל אובייקט מגדיר תחנה אחת ואחת. |
stations[].station_id |
מחרוזת | נדרש | המזהה של התחנה. |
stations[].name |
מחרוזת | נדרש |
השם הציבורי של התחנה בשפה המקומית של העיר שבה נמצאת התחנה. name חייב לפעול בהתאם לשילוט בתחנה, כאשר הוא זמין, או שעליו לשקף את מיקום התחנה באמצעות צומת רחובות או ציון דרך מקומי.
אין להשתמש בקיצורים כמו "St." for "Street" אלא אם צריך להשתמש במפורש בשילוט, וname צריך להשתמש באותיות רישיות וקטנות
לפי המוסכמות המקומיות לגבי שימוש באותיות רישיות בשמות, ולא באותיות רישיות בלבד.
|
stations[].lat |
קו רוחב | נדרש | קו הרוחב של התחנה WGS 84, במעלות עשרוניות. |
stations[].lon |
קו אורך | נדרש | קו האורך 84 של התחנה, בפורמט עשרוני. |
stations[].capacity |
מספר שלם לא שלילי | אופציונלי | מספר שלם לא שלילי שמייצג את המספר הכולל של נקודות הרציף שהותקנו בתחנה. הן זמינות והן לא זמינות. |
stations[].rental_uris |
פריט | נדרש |
אובייקט JSON שמכיל URI של השכרה ל-Android, ל-iOS ולאינטרנט בשדות המתאימים. אם מזהי ה-URI האלה מצוינים, הם מבטלים את קישורי העומק שהוגדרו כברירת מחדל כשצורף לספק. |
stations[].rental_uris.android |
URI | נדרש תנאי |
URI שניתן להעביר לאפליקציה ל-Android עם
כוונה מתוך ה-URI הזה חייב להיות קישור עומק ספציפי לתחנה נפרדת, לא דף השכרה כללי שכולל מידע לגבי יותר מתחנה אחת. קישור העומק חייב להעביר את המשתמש ישירות לתחנה ללא הצגת בקשות, דפי ביניים או כניסות. ניתן לוודא שהמשתמשים יוכלו לראות את התחנה גם אם הם מעולם לא פתחו את האפליקציה. מזהי URI לא חייבים לכלול את אם לשותף יש אפליקציה להשכרת Android, חובה למלא את השדה הזה. דוגמה לקישורים לאפליקציות ל-Android:
|
stations[].rental_uris.ios |
URI | נדרש תנאי |
URI שניתן להשתמש בו ב-iOS כדי להפעיל את אפליקציית ההשאלה עבור התחנה.
למידע נוסף על כך, ניתן לעיין במאמר של Apple בנושא סכמות של כתובות URL מותאמות אישית ב-iOS.
הרכיב ה-URI הזה חייב להיות קישור עומק ספציפי לתחנה נפרדת, לא דף השכרה כללי שכולל מידע לגבי יותר מתחנה אחת. קישור העומק חייב להעביר את המשתמש ישירות לתחנה ללא הצגת בקשות, דפי ביניים או כניסות. ניתן לוודא שהמשתמשים יוכלו לראות את התחנה גם אם הם מעולם לא פתחו את האפליקציה. מזהי URI לא חייבים לכלול את אם לשותף יש אפליקציה להשכרת iOS, חובה למלא את השדה הזה. דוגמה לקישורים אוניברסליים ל-iOS:
|
stations[].rental_uris.web |
כתובת URL | אופציונלי | כתובת URL לשימוש בדפדפן אינטרנט כדי להציג מידע נוסף על השכרת רכב בתחנה זו. כתובת ה-URL הזו צריכה להיות קישור עומק ספציפי לתחנה נפרדת, לא דף השכרה כללי שכולל מידע לגבי יותר מתחנה אחת. קישור העומק חייב להעביר את המשתמש ישירות לתחנה, ללא בקשות, דפי מעברון או כניסות. צריך לוודא שהמשתמשים יכולים לראות את התחנה גם אם הם מעולם לא פתחו את האפליקציה. כתובות URL לא חייבות לכלול את אם השדה הזה לא מוגדר, המשמעות היא שאין תמיכה בקישורי עומק בדפדפן האינטרנט. ערך לדוגמה:
|
הנה דוגמה עבור station_information.json
:
"stations": [
{
"station_id": "597",
"name": "Silverthorne Road, Battersea",
"lat": 51.472865,
"lon": -0.148059,
"capacity": 10,
"rental_uris": {
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890&platform=web"
}
},
]
חובה: station_status.json (מערכת עגינה)
אפשר לעיין במפרט של GBFS.
הפיד הזה מגדיר את הסטטוס העדכני ביותר של תחנות שיתוף אופניים ציבוריות.
שם השדה | סוג | דרישה | תיאור |
---|---|---|---|
stations |
מערך | נדרש | מערך של אובייקטים, שבו כל אובייקט מגדיר תחנה אחת ואחת. |
stations[].station_id |
מחרוזת | נדרש | המזהה של התחנה. |
stations[].num_bikes_available |
מספר שלם לא שלילי | נדרש |
מספר שלם שאינו שלילי שמייצג את מספר האופניים הפעילים שנמצאים בתחנה וייתכן שיוצעו להשכרה. כדי לבדוק אם יש כרגע אופניים להשכרה בתחנה, עליך
לבדוק את השדה |
stations[].vehicle_types_available |
מערך | אופציונלי |
מערך אובייקטים המגדיר את המספר הכולל של כלי הרכב,
המסווגים לפי סוג הרכב הספציפי שזמין בתחנה. בכל
אובייקט מוצג מספר הרכב הכולל עבור סוג הרכב המשויך. המספר הכולל של כלי הרכב מכל אחד מהאובייקטים האלה חייב להסתכם
בהתאם לערך שצוין בשדה
|
stations[].vehicle_types_available[].vehicle_type_id |
אינדונזיה | נדרש |
|
stations[].vehicle_types_available[].count |
מספר שלם לא שלילי | נדרש |
המספר הכולל של כלי הרכב הזמינים עבור |
stations[].num_docks_available |
מספר שלם לא שלילי | נדרש תנאי |
חובה למלא את השדה הזה, אלא אם יש תחנה בעגינה ללא הגבלה. לדוגמה, לתחנות וירטואליות יש קיבולת תחנות עגינה בלתי מוגבלת והשדה אינו נדרש. מספר שלם שאינו שלילי שמייצג את המספר הכולל של תחנות עגינה פונקציונליות בתחנה שיכולים לקבל החזרות. כדי לראות אם התחנה מקבלת כרגע אופניים, עליך לבדוק את השדה |
stations[].is_installed |
בוליאני | נדרש |
ערך בוליאני שמציין אם התחנה נמצאת ברחוב והותקנה כרגע. אם התחנה מותקנת ברחוב, יש להגדיר אותה ל- אם התחנה לא מותקנת ברחוב, יש להגדיר אותה ל- |
stations[].is_renting |
בוליאני | נדרש |
ערך בוליאני שמציין אם זה נכון שהתחנה מושכרת כרגע על אופניים. אם כרגע מושכרות אופניים בתחנה, הגדרה היא אם התחנה לא השכרת אופניים כרגע, יש להגדיר את הערך |
stations[].is_returning |
בוליאני | נדרש |
ערך בוליאני שמציין אם זה נכון שהתחנה מקבלת כרגע החזרות על אופניים. אם התחנה מקבלת כרגע אופניים, יש להגדיר את אם התחנה לא מקבלת כרגע החזרות על אופניים, יש להגדיר את הערך
|
הנה דוגמה של station_status.json
:
"stations": [
{
"station_id": "2",
"num_bikes_available": 6,
"vehicle_types_available": [
{
"vehicle_type_id" : "scooter_electric",
"count" : 2
},
{
"vehicle_type_id" : "bike_manual",
"count" : 4
}
],
"num_docks_available": 30,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"last_reported": 1576119631
},
]