ก่อนที่จะดำเนินการในส่วนนี้ หากยังไม่ได้ดำเนินการ โปรดยืนยันระบบไมโครโมบิลิตี้ที่รองรับ ที่คุณกำลังสร้างฟีด
ในส่วนต่อไปนี้ ส่วนหัวแต่ละส่วนจะมีรูปแบบดังนี้
Required|Optional|Conditionally required: Feed name (System supported)
ระบบที่รองรับมีดังนี้
- ระบบที่เชื่อมต่อกับแท่นชาร์จ
- ระบบแบบไม่มีสถานีจอด
- ระบบที่มีและไม่มีสถานีจอด
หากต้องการผสานรวมกับ Google ให้สำเร็จ ให้ระบุเฉพาะไฟล์ที่จำเป็นสำหรับระบบที่ฟีดอธิบาย และระบุช่องที่ต้องกรอกซึ่งรวมอยู่ในส่วนที่เกี่ยวข้อง สำหรับช่องที่ต้องกรอกตามเงื่อนไข โปรดดูคำแนะนำในคำอธิบายของช่อง นอกจากนี้ คุณยังระบุฟิลด์ที่ไม่บังคับซึ่งจะเพิ่มข้อมูลและมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นได้ด้วย
ส่วนหัวที่ต้องระบุสำหรับฟีดไมโครโมบิลิตี
ฟีดไมโครโมบิลิตี้คือฟีดที่มี Structured Data ของไมโครโมบิลิตี้แบบมีแท่นจอดหรือไม่มีแท่นจอด ตามที่กำหนดไว้ในบทความนี้
ฟีดทั้งหมดต้องระบุฟิลด์ที่รวมอยู่ในตารางต่อไปนี้ที่ ระดับบนสุดของออบเจกต์ JSON เสมอ ซึ่งเรียกรวมกันว่าส่วนหัว GBFS ทั่วไป
ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
---|---|---|---|
last_updated |
การประทับเวลา | ต้องระบุ | การประทับเวลา 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 |
รหัส | ต้องระบุ | ตัวระบุที่ไม่ซ้ำกันทั่วโลกสำหรับระบบการแชร์ยานพาหนะ ค่านี้ควรจะคงที่ตลอดอายุการใช้งานของระบบ ระบบหรือพื้นที่ทางภูมิศาสตร์ที่แตกต่างกันแต่ละแห่งซึ่งมีการใช้งานยานพาหนะ ควรมี system_id ของตัวเอง รหัสระบบควรเป็นที่รู้จักในฐานะ เป็นของระบบใดระบบหนึ่ง ไม่ใช่สตริงแบบสุ่ม เช่น bcycle_austin หรือ biketown_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 ไปยัง App Store เช่น Google Play หาก URI ชี้ไปยัง App Store เช่น Google Play เราขอแนะนำให้ URI เป็นไปตามแนวทางปฏิบัติแนะนำของ Android เพื่อให้แอปที่ดูสามารถเปิด URI ไปยังแอป App Store ดั้งเดิมได้โดยตรง แทนที่จะเป็นเว็บไซต์ |
rental_apps.android.discovery_uri |
URI | ต้องระบุ | URI ที่มีรูปแบบ your_custom_scheme://your/path/here
PackageManager.queryIntentActivities()
สามารถใช้ URI เพื่อดูว่ามีการติดตั้งแอป Android สำหรับเช่าในอุปกรณ์หรือไม่
|
rental_apps.ios |
วัตถุ | ต้องมีแบบมีเงื่อนไข | มีข้อมูลการดาวน์โหลดแอปเช่าและข้อมูลการค้นพบแอปสำหรับแพลตฟอร์ม iOS
ในฟิลด์ store_uri และ discovery_uri
หากผู้ให้บริการระบบมีแอปเช่าบน iOS คุณต้องระบุฟิลด์นี้
|
rental_apps.ios.store_uri |
URI | ต้องระบุ | URI ที่ดาวน์โหลดแอป iOS สำหรับเช่าได้ โดยปกติจะเป็น URI ไปยัง App Store เช่น Apple App Store หาก URI ชี้ไปยัง App Store เช่น Apple App Store เราขอแนะนำให้ URI เป็นไปตาม แนวทางปฏิบัติแนะนำของ iOS เพื่อให้แอปที่ดูสามารถเปิด URI ไปยัง แอป App Store ดั้งเดิมได้โดยตรงแทนที่จะเป็นเว็บไซต์ |
rental_apps.ios.discovery_uri |
URI | ต้องระบุ | URI ที่มีรูปแบบ your_custom_scheme:// UIApplication canOpenURL: สามารถใช้ URI เพื่อดูว่ามีการติดตั้งแอป iOS สำหรับเช่าในอุปกรณ์หรือไม่
|
ต้องระบุ: free_bike_status.json (ระบบแบบไม่มีแท่นจอด)
ดูข้อกำหนด GBFS ตามต้องการ
ฟีดนี้จะกำหนดสถานที่ตั้งและแอตทริบิวต์สำหรับยานพาหนะแบบตั้งอิสระที่พร้อมให้บริการ ยานพาหนะที่อยู่ระหว่างการเช่าต้องไม่ปรากฏในฟีดนี้เนื่องด้วยเหตุผลด้านความเป็นส่วนตัว
ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
---|---|---|---|
bikes |
อาร์เรย์ | ต้องระบุ | อาร์เรย์ของจักรยานที่หยุดให้บริการและพร้อมให้บริการในปัจจุบัน โดยจักรยานแต่ละคันเป็นออบเจ็กต์ |
bikes[].bike_id |
รหัส | ต้องระบุ | ตัวระบุของจักรยาน
โดยคุณสามารถเปลี่ยนรหัสเป็นสตริงแบบสุ่มหลัง การเดินทางแต่ละครั้งเพื่อปกป้องความเป็นส่วนตัว |
bikes[].lat |
ละติจูด | ต้องระบุ | ละติจูด WGS 84 ของจักรยานในรูปแบบองศาทศนิยม |
bikes[].lon |
ลองจิจูด | ต้องระบุ | ลองจิจูด WGS 84 ของจักรยานในรูปแบบองศาทศนิยม |
bikes[].is_reserved |
บูลีน | ต้องระบุ | จักรยานถูกจองอยู่หรือไม่ โดยมีค่าดังนี้
|
bikes[].is_disabled |
บูลีน | ต้องระบุ | จักรยานปิดใช้งานหรือเสียอยู่หรือไม่ ดังนี้
|
bikes[].rental_uris |
วัตถุ | ต้องระบุ | ออบเจ็กต์ JSON ที่มี URI ของการเช่าสำหรับ Android, iOS และเว็บใน ฟิลด์ที่เกี่ยวข้อง |
bikes[].rental_uris.android |
URI | ต้องมีแบบมีเงื่อนไข | URI ที่ส่งไปยังแอป Android ได้ด้วย
android.intent.action.VIEW Intent ของ Android เพื่อรองรับ
Deep Link ของ Android rental_uris ที่ระบุต้องเป็น
Android App Links เพื่อให้แอปที่ดูไม่ต้องจัดการ
การเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเองในกรณีที่
ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ
URI นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม URI ไม่จำเป็นต้องมี หากพาร์ทเนอร์มีแอปสำหรับเช่าบน Android คุณต้องระบุข้อมูลในช่องนี้ App Link ของ Androidตัวอย่าง Android App Links
|
bikes[].rental_uris.ios |
URI | ต้องมีแบบมีเงื่อนไข | URI ที่ใช้ใน iOS เพื่อเปิดแอปเช่าจักรยานได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความของ Apple เกี่ยวกับ
รูปแบบ URL ที่กำหนดเองของ iOS
rental_uris ที่ระบุต้องเป็น
Universal Link ของ iOS เพื่อให้แอปที่ดูไม่ต้องจัดการ
การเปลี่ยนเส้นทางของผู้ใช้ไปยัง App Store ด้วยตนเองในกรณีที่
ผู้ใช้ไม่ได้ติดตั้งแอปพลิเคชันของผู้ให้บริการ
URI นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม URI ไม่จำเป็นต้องมี bike_id สำหรับจักรยาน ตราบใดที่พาร์ทเนอร์มีวิธีอื่นในการระบุจักรยานที่เกี่ยวข้อง เช่น แอปเช่าสามารถใช้ตัวระบุอื่นๆ ภายใน URI เพื่อระบุจักรยานแต่ละคันได้ หากพาร์ทเนอร์มีแอปเช่าบน iOS คุณต้องระบุข้อมูลในช่องนี้ ตัวอย่าง Universal Link ของ iOS
|
bikes[].rental_uris.web |
URL | ไม่บังคับ | URL ที่เว็บเบราว์เซอร์ใช้แสดงข้อมูลเพิ่มเติม เกี่ยวกับการเช่ายานพาหนะนี้ URL นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับจักรยานแต่ละคัน ไม่ใช่ หน้าการเช่าทั่วไปที่มีข้อมูลสำหรับจักรยานมากกว่า 1 คัน Deep Link จะต้องนำผู้ใช้ไปยังจักรยานโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นจักรยานได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม URL ไม่จำเป็นต้องมี หากไม่ได้ตั้งค่าช่องนี้ หมายความว่าเบราว์เซอร์เว็บไม่รองรับ Deep Link ค่าตัวอย่าง:
|
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 |
การประทับเวลา | ไม่บังคับ | ตั้งค่าเป็นเวลาล่าสุดที่ยานพาหนะรายงานสถานะไปยังแบ็กเอนด์ของผู้ให้บริการ |
ตัวอย่างสำหรับ 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 |
อาร์เรย์ | ต้องระบุ | อาร์เรย์ของออบเจ็กต์ ซึ่งแต่ละออบเจ็กต์จะกำหนดประเภทยานพาหนะที่แตกต่างกัน ในแคตตาล็อกของผู้ให้บริการ มีออบเจ็กต์ได้เพียง 1 รายการสำหรับ ประเภทยานพาหนะที่กำหนด |
vehicle_types[].vehicle_type_id |
รหัส | ต้องระบุ | ตัวระบุที่ไม่ซ้ำกันสำหรับประเภทยานพาหนะที่ระบุ |
vehicle_types[].form_factor |
ค่าแจกแจง | ต้องระบุ | การแจงนับที่แสดงถึงรูปแบบทั่วไปของยานพาหนะจาก
รายการค่าที่ถูกต้องในปัจจุบันต่อไปนี้
|
vehicle_types[].propulsion_type |
ค่าแจกแจง | ต้องระบุ | การแจงนับที่แสดงถึงประเภทการขับเคลื่อนหลักของยานพาหนะจาก
รายการค่าที่ถูกต้องในปัจจุบันต่อไปนี้
|
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 |
อาร์เรย์ | ต้องมีแบบมีเงื่อนไข |
หากราคาเป็นฟังก์ชันของระยะทางที่เดินทางและแสดงเป็นกิโลเมตร คุณต้องระบุฟิลด์นี้ อาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์กำหนด
กลุ่มที่แบ่งตามระยะทางที่กำหนด ค่า หากต้องการทราบราคารวมของแพ็กเกจที่ระบุ ให้เพิ่มค่า หากไม่ได้ตั้งค่าฟิลด์นี้ จะไม่มีราคาผันแปรตามระยะทาง และจะไม่มีการรวมราคาผันแปรเป็นส่วนหนึ่งของราคารวม |
plans[].per_km_pricing[].start |
จำนวนเต็มที่ไม่เป็นลบ | ต้องระบุ |
จำนวนกิโลเมตรที่ระบบจะเริ่มเรียกเก็บเงินตามอัตราของกลุ่ม
ฟิลด์นี้ตั้งค่าเป็นค่าที่รวม
ซึ่งเริ่มต้นช่วงของกลุ่ม ดังนั้น เมื่อครบจำนวนกิโลเมตรแล้ว ระบบจะเรียกเก็บเงิน rate เพียงครั้งเดียว
|
plans[].per_km_pricing[].rate |
ทศนิยม | ต้องระบุ | อัตราที่เรียกเก็บสำหรับแต่ละ interval ซึ่งเริ่มต้นที่ start ของกลุ่ม (รวม) หากตั้งค่าช่องนี้เป็น
ตัวเลขติดลบ ผู้เดินทางจะได้รับส่วนลด
|
plans[].per_km_pricing[].interval |
จำนวนเต็มที่ไม่เป็นลบ | ต้องระบุ |
ระยะห่างเป็นกิโลเมตรที่ระบบจะใช้ ระบบจะใช้ หากตั้งค่า หากตั้งค่าฟิลด์นี้เป็น |
plans[].per_km_pricing[].end |
จำนวนเต็มที่ไม่เป็นลบ | ไม่บังคับ |
จำนวนกิโลเมตร ณ จุดที่ระบบจะไม่ใช้ หากไม่ได้ตั้งค่าฟิลด์นี้หรือฟิลด์นี้ว่างเปล่า ระบบจะเรียกเก็บเงิน |
plans[].per_min_pricing |
อาร์เรย์ | ต้องมีแบบมีเงื่อนไข |
หากราคาเป็นฟังก์ชันของเวลาที่ผ่านไป ซึ่งแสดงเป็นนาที คุณต้องระบุข้อมูลในฟิลด์นี้ อาร์เรย์ของออบเจ็กต์ที่แต่ละออบเจ็กต์กำหนดกลุ่มที่แบ่งตามเวลาที่ระบุ
ค่า หากต้องการทราบราคารวมของแพ็กเกจที่ระบุ ให้เพิ่มค่า หากไม่ได้ตั้งค่าฟิลด์นี้ จะไม่มีราคาผันแปรตามเวลา และ จึงไม่มีการรวมราคาผันแปรเป็นส่วนหนึ่งของราคารวม |
plans[].per_min_pricing[].start |
ทศนิยม | ต้องระบุ |
จำนวนนาทีที่ระบบเริ่มเรียกเก็บเงินตามอัตราของกลุ่ม
ฟิลด์นี้ตั้งค่าเป็นค่าที่รวม
ซึ่งเริ่มต้นช่วงของกลุ่ม ดังนั้น เมื่อเวลาผ่านไปตามจำนวนนาทีที่ตั้งไว้
ระบบจะเรียกเก็บเงินจากคุณ rate ครั้งเดียว
|
plans[].per_min_pricing[].rate |
ทศนิยม | ต้องระบุ | อัตราที่เรียกเก็บสำหรับ 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
- หากการเดินทางใช้เวลาน้อยกว่า 1 นาที ผู้ใช้จะชำระเงิน 2 USD
- ตัวอย่าง: การเดินทาง 59 วินาที
- [1,2): $3 USD
- หากการเดินทางนานตั้งแต่ 1 นาทีขึ้นไปแต่ไม่ถึง 2 นาที ผู้ใช้จะจ่าย $2 + $1 = $3 USD
- ตัวอย่าง: การเดินทาง 1 นาที การเดินทาง 1 นาที 45 วินาที
- x จำนวนนาทีที่ x มากกว่าหรือเท่ากับ 2:
$3 + (($2 + $1) * (x - 2 + 1))
USD
- หากการเดินทางนานกว่าหรือเท่ากับ 2 นาที ผู้ใช้จะชำระเงิน $3 สำหรับ
การเดินทางที่ใช้เวลาน้อยกว่า 2 นาที และ ($1 [ต่อเนื่อง
จากรายการแรกของ
per_min_pricing
] + $2 [รายการที่สองของper_min_pricing
]) สำหรับทุกๆ นาทีหลังจากนั้นและ รวมถึง 2 นาที - ตัวอย่าง
- การเดินทาง 2 นาทีมีค่าใช้จ่าย 90 บาท + (60 บาท + 30 บาท) = 180 บาท
- ค่าเดินทาง 2 นาที 30 วินาที = 90 บาท + (60 บาท + 30 บาท) = 180 บาท
- ค่าโดยสารสำหรับการเดินทาง 3 นาที = 90 บาท + ((60 บาท + 30 บาท) * 2) = 270 บาท
- ค่าเดินทาง 10 นาที = 90 บาท + ((60 บาท + 30 บาท) * 9) = 900 บาท
- หากการเดินทางนานกว่าหรือเท่ากับ 2 นาที ผู้ใช้จะชำระเงิน $3 สำหรับ
การเดินทางที่ใช้เวลาน้อยกว่า 2 นาที และ ($1 [ต่อเนื่อง
จากรายการแรกของ
{
"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 CAD ต่อกม.รวมถึง $0.50 CAD ต่อนาที
- อัตราทั้ง 2 นี้เกิดขึ้นพร้อมกันและไม่ได้ขึ้นอยู่กับกันและกัน
- ดังนั้น การเดินทาง 1 กิโลเมตรที่ใช้เวลา 10 นาทีจะมีค่าใช้จ่าย 9 ดอลลาร์แคนาดา โดยรายละเอียดค่าใช้จ่ายมีดังนี้
- $3 ราคาฐาน
- $0.25 * 2 โดยจะเรียกเก็บครั้งเดียวเมื่อเริ่มการเดินทางและอีกครั้งเมื่อถึงกม. ที่ 1
- $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
}]
}
}
ต้องระบุแบบมีเงื่อนไข: geofencing_zones.json (ระบบที่มีแท่นจอดและไม่มีแท่นจอด)
ดูข้อกำหนด GBFS ตามต้องการ
ฟีดนี้กำหนดข้อมูลรั้วภูมิศาสตร์สำหรับยานพาหนะที่แยกต่างหาก ข้อมูล Geofencing ประกอบด้วยขอบเขตทางภูมิศาสตร์ที่ระบุตำแหน่งที่อนุญาตให้ยานพาหนะ เริ่มและสิ้นสุดการเดินทาง รวมถึงความเร็วที่ยานพาหนะ สามารถใช้ได้ ความเร็วนี้คือความเร็วสูงสุดของยานพาหนะหรือขีดจำกัดความเร็ว ของถนนที่ยานพาหนะอยู่ แล้วแต่ว่าความเร็วใดต่ำกว่า ผู้ขับขี่ต้องปฏิบัติตาม กฎหมายและกฎหมายท้องถิ่น
เราใช้ข้อมูลนี้เพื่อให้เมื่อผู้ใช้ค้นหาเส้นทางหนึ่งๆ หากจุดสิ้นสุดของ การเดินทางอยู่นอกรั้วเสมือนที่เฉพาะเจาะจง ระบบจะกรองผลลัพธ์ของไมโครโมบิลิตี้ออก หากไม่ได้ระบุรั้วกั้นทางภูมิศาสตร์ 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 |
GeoJSON Multipolygon | ต้องระบุ | GeoJSON Multipolygon ที่อธิบายถึงจุดที่ไม่สามารถเริ่ม สิ้นสุด หรือผ่านการเดินทาง รวมถึงข้อจำกัดอื่นๆ การจัดเรียงจุดตามเข็มนาฬิกา จะกำหนดพื้นที่ที่ล้อมรอบด้วยรูปหลายเหลี่ยม ส่วนการจัดเรียง ทวนเข็มนาฬิกาจะกำหนดพื้นที่ภายนอกรูปหลายเหลี่ยม ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ กฎมือขวา |
geofencing_zones.features[].properties |
วัตถุ | ต้องระบุ | ออบเจ็กต์ที่กำหนดค่าเผื่อการเดินทางและข้อจำกัด |
geofencing_zones.features[].properties.rules |
อาร์เรย์ | ไม่บังคับ | อาร์เรย์ของออบเจ็กต์ โดยแต่ละออบเจ็กต์จะกำหนดกฎเพียงข้อเดียว หาก กฎ 2 ข้อขึ้นไปทับซ้อนกัน ขัดแย้งกัน หรือขัดแย้งกันในลักษณะอื่นๆ กฎที่กำหนดไว้เร็วที่สุดในลำดับของไฟล์ 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." สำหรับ "Street" เว้นแต่จะมีการใช้ในป้ายอย่างชัดเจน
และ name ต้องเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผสมกัน
ตามธรรมเนียมท้องถิ่นสำหรับการใช้อักษรตัวพิมพ์ใหญ่ในชื่อสถานที่และไม่ใช่
ตัวพิมพ์ใหญ่ทั้งหมด
|
stations[].lat |
ละติจูด | ต้องระบุ | ละติจูด WGS 84 ของสถานีในรูปแบบองศาทศนิยม |
stations[].lon |
ลองจิจูด | ต้องระบุ | ลองจิจูด WGS 84 ของสถานีในรูปแบบองศาทศนิยม |
stations[].capacity |
จำนวนเต็มที่ไม่เป็นลบ | ไม่บังคับ | จำนวนเต็มที่ไม่เป็นลบซึ่งแสดงจำนวนจุดเทียบท่าทั้งหมดที่ติดตั้งในสถานี ทั้งที่พร้อมใช้งานและไม่พร้อมใช้งาน |
stations[].rental_uris |
วัตถุ | ต้องระบุ |
ออบเจ็กต์ JSON ที่มี URI ของการเช่าสำหรับ Android, iOS และเว็บใน ฟิลด์ที่เกี่ยวข้อง หากระบุ URI เหล่านี้ URI จะลบล้าง Deep Link เริ่มต้นที่ตั้งค่าไว้เมื่อมีการเริ่มต้นใช้งานผู้ให้บริการ |
stations[].rental_uris.android |
URI | ต้องมีแบบมีเงื่อนไข |
URI ที่ส่งไปยังแอป Android ได้ด้วย
URI นี้ต้องเป็น Deep Link ที่เจาะจงสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรง โดยไม่มีข้อความแจ้ง หน้าคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้ เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม URI ไม่จำเป็นต้องมี หากพาร์ทเนอร์มีแอปสำหรับเช่าบน Android คุณต้องระบุข้อมูลในช่องนี้ ตัวอย่าง Android App Links
|
stations[].rental_uris.ios |
URI | ต้องมีแบบมีเงื่อนไข |
URI ที่ใช้ใน iOS เพื่อเปิดแอปเช่าสำหรับสถานีได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความของ Apple เกี่ยวกับ
รูปแบบ URL ที่กำหนดเองของ iOS
URI นี้ต้องเป็น Deep Link ที่เจาะจงสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรง โดยไม่มีข้อความแจ้ง หน้าคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้ เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม URI ไม่จำเป็นต้องมี หากพาร์ทเนอร์มีแอปเช่าบน iOS คุณต้องระบุข้อมูลในช่องนี้ ตัวอย่าง Universal Link ของ iOS
|
stations[].rental_uris.web |
URL | ไม่บังคับ | URL ที่เว็บเบราว์เซอร์ใช้เพื่อแสดงข้อมูลเพิ่มเติม เกี่ยวกับวิธีเช่ายานพาหนะที่สถานีนี้ URL นี้ต้องเป็น Deep Link ที่เฉพาะเจาะจงสำหรับสถานีแต่ละแห่ง ไม่ใช่หน้าเช่าทั่วไปที่มีข้อมูลสำหรับสถานีมากกว่า 1 แห่ง Deep Link ต้องนำผู้ใช้ไปยังสถานีโดยตรงโดยไม่มีข้อความแจ้ง หน้าโฆษณาคั่น หรือการเข้าสู่ระบบ ตรวจสอบว่าผู้ใช้เห็นสถานีได้แม้ว่าจะไม่เคยเปิดแอปพลิเคชันก็ตาม คุณไม่จำเป็นต้องใส่ หากไม่ได้ตั้งค่าช่องนี้ หมายความว่าเว็บเบราว์เซอร์ไม่รองรับ Deep Link ค่าตัวอย่าง:
|
ตัวอย่างสำหรับ 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 |
อาร์เรย์ | ต้องระบุ | อาร์เรย์ของออบเจ็กต์ โดยแต่ละออบเจ็กต์จะกำหนดสถานีเพียง 1 สถานีเท่านั้น |
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
},
]