Bevor Sie mit diesem Abschnitt fortfahren, sollten Sie prüfen, ob die unterstützten Mikromobilitätssysteme, für die Sie den Feed erstellen, bereits vorhanden sind.
In den folgenden Abschnitten hat jede Überschrift das folgende Format:
Required|Optional|Conditionally required: Feed name (System supported)
. Die folgenden Systeme werden unterstützt:
- Angedocktes System
- Stationsloses System
- System mit und ohne Dockingstation
Damit die Integration mit Google gelingt, stellen Sie nur die Dateien bereit, die für das System erforderlich sind, das in Ihrem Feed beschrieben wird, und geben Sie die erforderlichen Felder in den entsprechenden Abschnitten an. Informationen zu bedingt erforderlichen Feldern finden Sie in der Beschreibung des jeweiligen Felds. Sie können auch optionale Felder angeben, um Informationen hinzuzufügen und die Nutzerfreundlichkeit zu erhöhen.
Erforderlicher Header für Micromobility-Feeds
Mikromobilitätsfeeds enthalten entweder angedockte oder nicht angedockte strukturierte Mikromobilitätsdaten, wie in diesem Artikel definiert.
In allen Feeds müssen die Felder in der folgenden Tabelle immer auf der obersten Ebene des JSON-Objekts angegeben werden. Sie werden zusammenfassend als gemeinsamer GBFS-Header bezeichnet.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
last_updated |
Zeitstempel | Erforderlich | Ein POSIX-Zeitstempel, der die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 UTC angibt.
Wird auf den Zeitpunkt festgelegt, zu dem die Daten im Feed zuletzt aktualisiert wurden. |
ttl |
Nicht negative Ganzzahl | Erforderlich | Eine nicht negative Ganzzahl, die die Anzahl der Sekunden angibt, die bis zur Aktualisierung des Feeds verbleiben.
Wenn die Daten mit einer konstanten Rate aktualisiert werden müssen, legen Sie diesen Wert auf |
data |
JSON | Erforderlich | JSON-Datei mit den Datenfeldern für den einzelnen Feed. |
Ein aggregierter free_bike_status.json
-Feed, in dem der gemeinsame GBFS-Header angegeben ist, könnte beispielsweise so aussehen:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
Erforderlich: system_information.json (angedocktes und nicht angedocktes System)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
Dieser Feed enthält Details zum Systembetreiber.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
system_id |
ID | Erforderlich | Eine global eindeutige Kennung für das Carsharing-System. Dieser Wert soll über die gesamte Lebensdauer des Systems gleich bleiben. Jedes separate System oder geografische Gebiet, in dem Fahrzeuge betrieben werden, SOLLTE eine eigene system_id haben. System-IDs SOLLTEN als zu einem bestimmten System gehörig erkennbar sein und nicht als zufällige Strings – z. B. bcycle_austin oder biketown_pdx. |
name |
String | Erforderlich | Der Name des Systems, der Kunden angezeigt wird. |
rental_apps |
Objekt | Erforderlich | Ein JSON-Objekt, das die Informationen der Leih-App für Android und iOS in den entsprechenden Feldern enthält. |
rental_apps.android |
Objekt | Conditionally required |
Enthält Informationen zum Herunterladen und zur App-Erkennung von Leih-Apps für die Android-Plattform in den Feldern store_uri und discovery_uri . Wenn der Systemanbieter eine Android-Leih-App hat, ist dieses Feld erforderlich.
|
rental_apps.android.store_uri |
URI | Erforderlich | URI, über den die Android-App für Leihvideos heruntergeladen werden kann. Dies ist in der Regel ein URI zu einem App-Shop wie Google Play. Wenn der URI auf einen App-Store wie Google Play verweist, empfehlen wir, dass er den Android-Best-Practices entspricht, damit die Wiedergabe-App den URI direkt in der nativen App des App-Stores öffnen kann und nicht auf einer Website. |
rental_apps.android.discovery_uri |
URI | Erforderlich | URI mit dem Format your_custom_scheme://your/path/here .
Der URI kann von PackageManager.queryIntentActivities() verwendet werden, um herauszufinden, ob die Android-App für die Leihfunktion auf dem Gerät installiert ist.
|
rental_apps.ios |
Objekt | Conditionally required | Enthält Informationen zum Herunterladen und Auffinden von Leih-Apps für die iOS-Plattform in den Feldern store_uri und discovery_uri . Wenn der Systemanbieter eine iOS-Leih-App hat, ist dieses Feld erforderlich.
|
rental_apps.ios.store_uri |
URI | Erforderlich | URI, über den die iOS-App für den Verleih heruntergeladen werden kann. Dies ist in der Regel ein URI zu einem App-Shop wie dem App Store. Wenn der URI auf einen App-Store wie den Apple App Store verweist, empfehlen wir, dass der URI den iOS-Best Practices entspricht, damit die Wiedergabe-App den URI direkt zur nativen App-Store-App und nicht zu einer Website öffnen kann. |
rental_apps.ios.discovery_uri |
URI | Erforderlich | URI mit dem Format your_custom_scheme:// . Der URI kann von UIApplication canOpenURL: verwendet werden, um herauszufinden, ob die iOS-App für den Verleih auf dem Gerät installiert ist.
|
Erforderlich: free_bike_status.json (stationsloses System)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed werden die Standorte und Attribute für verfügbare freistehende Fahrzeuge definiert. Aus Datenschutzgründen dürfen Fahrzeuge, die Teil einer aktiven Vermietung sind, nicht in diesem Feed enthalten sein.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
bikes |
Array | Erforderlich | Ein Array mit derzeit verfügbaren, geparkten Fahrrädern, wobei jedes Fahrrad ein Objekt ist. |
bikes[].bike_id |
ID | Erforderlich | Die ID eines Fahrrads.
Zum Schutz der Privatsphäre kann die ID nach jeder Fahrt in einen zufälligen String geändert werden. |
bikes[].lat |
Breitengrad | Erforderlich | Der WGS84-Breitengrad des Fahrrads im Dezimalgradformat. |
bikes[].lon |
Längengrad | Erforderlich | Der WGS84-Längengrad des Fahrrads im Dezimalgradformat. |
bikes[].is_reserved |
Boolesch | Erforderlich | Gibt an, ob das Fahrrad derzeit reserviert ist. Mögliche Werte:
|
bikes[].is_disabled |
Boolesch | Erforderlich | Gibt an, ob das Fahrrad derzeit deaktiviert oder defekt ist:
|
bikes[].rental_uris |
Objekt | Erforderlich | Ein JSON-Objekt, das Miet-URIs für Android, iOS und das Web in den entsprechenden Feldern enthält. Dieses Feld ist in Version 2.2 optional, aber für die Implementierung mit Google erforderlich. |
bikes[].rental_uris.android |
URI | Conditionally required | Ein URI, der mit einem android.intent.action.VIEW -Android-Intent an eine Android-App übergeben werden kann, um
Android-Deeplinks zu unterstützen. Der bereitgestellte rental_uris muss
Android App Links sein, damit die Wiedergabe-App die Weiterleitung des Nutzers zum App-Shop nicht manuell verwalten muss, falls der Nutzer die Anbieteranwendung nicht installiert hat.
Dieser URI muss ein Deeplink sein, der sich auf das jeweilige Fahrrad bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Fahrrädern sein. Über den Deeplink muss der Nutzer direkt zum Fahrrad gelangen, ohne dass er aufgefordert wird, etwas zu tun, Zwischenseiten angezeigt werden oder er sich anmelden muss. Achte darauf, dass Nutzer das Fahrrad sehen können, auch wenn sie die App noch nie geöffnet haben. URIs müssen nicht unbedingt die Dieses Feld ist erforderlich, wenn der Partner eine Android-App für den Verleih hat. Beispiel für einen Android-App-Link:
|
bikes[].rental_uris.ios |
URI | Conditionally required | Ein URI, der auf iOS verwendet werden kann, um die Leih-App für das Fahrrad zu starten.
Weitere Informationen dazu finden Sie im Apple-Artikel zu
benutzerdefinierten URL-Schemata für iOS.
Der bereitgestellte rental_uris muss
iOS-Universal-Links sein, damit die Wiedergabe-App die Weiterleitung des Nutzers zum App-Store nicht manuell verwalten muss, falls der Nutzer die Anbieteranwendung nicht installiert hat.
Dieser URI muss ein Deeplink sein, der sich auf das jeweilige Fahrrad bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Fahrrädern sein. Über den Deeplink muss der Nutzer direkt zum Fahrrad gelangen, ohne dass er aufgefordert wird, etwas zu tun, Zwischenseiten angezeigt werden oder er sich anmelden muss. Achte darauf, dass Nutzer das Fahrrad sehen können, auch wenn sie die App noch nie geöffnet haben. URIs müssen nicht unbedingt die bike_id für das Fahrrad enthalten, sofern der Partner andere Möglichkeiten hat, das jeweilige Fahrrad zu identifizieren. Die Verleih-App kann beispielsweise andere Kennungen im URI verwenden, um das Fahrrad eindeutig zu identifizieren. Dieses Feld ist erforderlich, wenn der Partner eine iOS-Leih-App hat. Beispiel für einen universellen iOS-Link:
|
bikes[].rental_uris.web |
URL | Optional | Eine URL, die von einem Webbrowser verwendet werden kann, um weitere Informationen zum Mieten eines Fahrzeugs an diesem Standort anzuzeigen. Diese URL muss ein Deeplink sein, der sich auf das jeweilige Fahrrad bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Fahrrädern sein. Über den Deeplink muss der Nutzer direkt zum Fahrrad gelangen, ohne dass er aufgefordert wird, etwas zu tun, Zwischenseiten angezeigt werden oder er sich anmelden muss. Achte darauf, dass Nutzer das Fahrrad sehen können, auch wenn sie die App noch nie geöffnet haben. URLs müssen nicht unbedingt die Wenn dieses Feld nicht festgelegt ist, werden Deeplinks für den Webbrowser nicht unterstützt. Beispielwert:
|
bikes[].vehicle_type_id |
ID | Erforderlich | Die vehicle_type_id des Fahrzeugs, wie im Abschnitt vehicle_types.json beschrieben.
|
bikes[].pricing_plan_id |
ID | Erforderlich | Kennung des Preismodells, das angewendet wird, wenn dieser Fahrzeugtyp wie im Abschnitt system_pricing_plans.json beschrieben gemietet wird.
|
bikes[].current_range_meters |
Nicht negative Gleitkommazahl | Conditionally required | Dieses Feld ist erforderlich, wenn die vehicle_type -Definition, die dem Fahrzeug entspricht, einen Motor hat.
Die maximale Entfernung in Metern, die das Fahrzeug mit dem aktuellen Lade- oder Kraftstoffstand zurücklegen kann, ohne dass es aufgeladen oder aufgetankt werden muss. |
bikes[].last_reported |
Zeitstempel | Optional | Der Zeitpunkt, zu dem das Fahrzeug seinen Status zuletzt an das Backend des Betreibers gemeldet hat. |
Das folgende Beispiel zeigt 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
}
]
Erforderlich: vehicle_types.json (System mit und ohne Stationen)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed werden die Details der einzelnen Fahrzeugtypen definiert, auf die im Abschnitt free_bike_status.json
verwiesen wird.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
vehicle_types |
Array | Erforderlich | Ein Array von Objekten, wobei jedes Objekt einen bestimmten Fahrzeugtyp im Katalog des Anbieters definiert. Für einen bestimmten Fahrzeugtyp kann es nur ein Objekt geben. |
vehicle_types[].vehicle_type_id |
ID | Erforderlich | Eine eindeutige Kennung für einen bestimmten Fahrzeugtyp. |
vehicle_types[].form_factor |
Enum | Erforderlich | Ein Enum, das den allgemeinen Formfaktor des Fahrzeugs aus der folgenden Liste der derzeit gültigen Werte darstellt:
|
vehicle_types[].propulsion_type |
Enum | Erforderlich | Ein Enum, das den primären Antriebstyp des Fahrzeugs aus der folgenden Liste der derzeit gültigen Werte darstellt:
|
vehicle_types[].max_range_meters |
Nicht negative Gleitkommazahl | Conditionally required | Wenn propulsion_type nicht auf human festgelegt ist, hat das Fahrzeug einen Motor und dieses Feld ist daher erforderlich.
Gibt die maximale Entfernung in Metern an, die das Fahrzeug ohne Aufladen oder Tanken zurücklegen kann, wenn es vollständig betankt oder aufgeladen ist. |
Das folgende Beispiel zeigt 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
}
]
Erforderlich: system_pricing_plans.json (Dockless-System)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed werden die Preismodelle für eigenständige Fahrzeuge definiert. Anbieter müssen Preisinformationen für freistehende Fahrzeuge angeben.
Diese Datei ist in V2.2 optional, aber für die Implementierung mit Google erforderlich.Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
plans |
Array | Erforderlich | Ein Array von Objekten, wobei jedes Objekt einen bestimmten Tarif definiert. |
plans[].plan_id |
ID | Erforderlich | Ein String, der eine eindeutige Kennung für den angegebenen Preisplan darstellt, den der Anbieter anbietet. |
plans[].url |
URL | Optional | Die URL, über die Endnutzer weitere Informationen zum Tarif erhalten. |
plans[].currency |
String | Erforderlich | Der ISO 4217-Standard für das Preismodell. |
plans[].price |
Nicht negative Gleitkommazahl | Erforderlich |
Das Preismodell muss entweder als nicht bewertetes oder als bewertetes Preismodell definiert werden:
|
plans[].per_km_pricing |
Array | Conditionally required |
Wenn der Preis von der zurückgelegten Strecke in Kilometern abhängt, ist dieses Feld erforderlich. Ein Array von Objekten, wobei jedes Objekt ein bestimmtes segmentiertes Segment definiert. Der Um den Gesamtpreis des angegebenen Tarifs zu ermitteln, addieren Sie den Wenn dieses Feld nicht festgelegt ist, gibt es keine variablen Preise basierend auf der Entfernung und daher sind auch keine im Gesamtpreis enthalten. |
plans[].per_km_pricing[].start |
Nicht negative Ganzzahl | Erforderlich |
Die Anzahl der Kilometer, ab der der Segmenttarif berechnet wird.
Dieses Feld ist auf den inklusiven Wert festgelegt, mit dem der Bereich des Segments beginnt. Sobald die Anzahl der Kilometer erreicht ist, wird die rate einmal berechnet.
|
plans[].per_km_pricing[].rate |
Gleitkommazahl | Erforderlich | Der Preis, der für jede interval berechnet wird, beginnend mit dem inklusiven start des Segments. Wenn dieses Feld auf eine negative Zahl festgelegt ist, erhält der Reisende einen Rabatt.
|
plans[].per_km_pricing[].interval |
Nicht negative Ganzzahl | Erforderlich |
Das Intervall in Kilometern, in dem die
Wenn der Wenn dieses Feld auf |
plans[].per_km_pricing[].end |
Nicht negative Ganzzahl | Optional |
Die Anzahl der Kilometer, ab der die Wenn dieses Feld nicht festgelegt oder leer ist, wird der |
plans[].per_min_pricing |
Array | Conditionally required |
Wenn der Preis von der verstrichenen Zeit (in Minuten) abhängt, ist dieses Feld erforderlich. Ein Array von Objekten, wobei jedes Objekt ein bestimmtes zeitlich unterteiltes Segment definiert. Der Um den Gesamtpreis des angegebenen Tarifs zu ermitteln, addieren Sie den Wenn dieses Feld nicht festgelegt ist, gibt es keine variablen Preise basierend auf der Zeit und daher sind keine im Gesamtpreis enthalten. |
plans[].per_min_pricing[].start |
Gleitkommazahl | Erforderlich |
Die Anzahl der Minuten, ab der der Segmenttarif berechnet wird.
Dieses Feld ist auf den inklusiven Wert festgelegt, mit dem der Bereich des Segments beginnt. Nach Ablauf der festgelegten Anzahl von Minuten wird die rate also einmal in Rechnung gestellt.
|
plans[].per_min_pricing[].rate |
Gleitkommazahl | Erforderlich | Der Preis, der für jede interval berechnet wird. Die Rate beginnt bei start des Segments (einschließlich). Wenn dieses Feld auf eine negative Zahl festgelegt ist, erhält der Reisende einen Rabatt.
|
plans[].per_min_pricing[].interval |
Nicht negative Ganzzahl | Erforderlich |
Das Intervall in Minuten, in dem die Der Wert von Wenn der Wenn dieses Feld auf |
plans[].per_min_pricing[].end |
Nicht negative Ganzzahl | Optional |
Die Anzahl der Minuten, nach denen die Wenn dieses Feld nicht festgelegt oder leer ist, wird der |
Beispiele für system_pricing_plans.json
Dieser Abschnitt enthält informative system_pricing_plans.json
-Codebeispiele. Außerdem werden die relevanten Details und Ergebnisse für jedes Beispiel angegeben.
Beispiel 1 für system_pricing_plans.json
Im folgenden Beispiel für einen Tarifplan werden Gebühren basierend auf der Fahrzeit für die folgenden Intervalle berechnet:
- [0,1): 2 $
- Wenn die Fahrt weniger als eine Minute dauert, zahlt der Nutzer 2 $.
- Beispiel: Fahrt über 59 Sekunden
- [1,2): 3 $USD
- Wenn die Fahrt mindestens eine Minute, aber weniger als zwei Minuten dauert, zahlt der Nutzer 2 $+ 1 $= 3 $.
- Beispiele: 1-minütige Fahrt; 1-minütige und 45-sekündige Fahrt
- x Minuten, wobei x größer oder gleich 2 ist:
3 $ + ((2 $ + 1 $) × (x – 2 + 1)) USD
- Wenn die Fahrt mindestens zwei Minuten dauert, zahlt der Nutzer 3 $für den Teil der Fahrt, der weniger als zwei Minuten dauert, und (1 $ [Fortsetzung des ersten Eintrags der
per_min_pricing
-Liste] + 2 $ [zweiter Eintrag derper_min_pricing
-Liste]) für jede Minute nach und einschließlich zwei Minuten. - Beispiele:
- Kosten für 2‑minütige Fahrt: 3 $+ (2 $ + 1 $) = 6 $
- Kosten für eine 2 Minuten und 30 Sekunden lange Fahrt: 3 $+ (2 $ + 1 $) = 6 $
- Eine 3-minütige Fahrt kostet 3 $+ (($2 + $1) × 2) = 9 $.
- Kosten für eine 10-minütige Fahrt: 3 $+ ((2 $ + 1 $) × 9) = 30 $
- Wenn die Fahrt mindestens zwei Minuten dauert, zahlt der Nutzer 3 $für den Teil der Fahrt, der weniger als zwei Minuten dauert, und (1 $ [Fortsetzung des ersten Eintrags der
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
Beispiel 2 für system_pricing_plans.json
In diesem Beispiel sehen Sie ein Codebeispiel für ein Preismodell, das sowohl nach Minuten als auch nach Kilometern berechnet wird:
- Konkret werden dem Endnutzer 0,25 $ (CAD) pro Kilometer sowie 0,50 $ (CAD) pro Minute berechnet.
- Beide Raten treten gleichzeitig auf und sind nicht voneinander abhängig.
- Eine 10-minütige Fahrt über einen Kilometer kostet also 9 CAD. Die Kosten setzen sich so zusammen:
- 3 $, Grundpreis
- 0,25 $ × 2, einmal zu Beginn der Fahrt und einmal nach 1 km.
- 0,5 $ * 11, einmalig zu Beginn jeder Minute in Rechnung gestellt. Die Abrechnung beginnt bei 0 Sekunden. Das letzte Intervall wird nach 10 Minuten abgerechnet.
{
"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
}]
}
}
Bedingt erforderlich: geofencing_zones.json (System mit und ohne Ladestation)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed werden die Geofencing-Daten für freistehende Fahrzeuge definiert. Geofencing-Daten umfassen die geografischen Grenzen, die angeben, wo Fahrzeuge die Fahrt beginnen und beenden dürfen, sowie die Geschwindigkeit, mit der die Fahrzeuge fahren dürfen. Diese Geschwindigkeit ist entweder die Höchstgeschwindigkeit des Fahrzeugs oder die Geschwindigkeitsbegrenzung der Straße, auf der sich das Fahrzeug befindet, je nachdem, welcher Wert niedriger ist. Fahrer müssen die örtlichen Gesetze und Verordnungen einhalten.
Wir verwenden diese Daten, damit das Ergebnis für Mikromobilität herausgefiltert wird, wenn das Ende der Fahrt außerhalb der angegebenen Geofences liegt. Wenn keine Geofences angegeben werden, behandelt Google den Dienst so, als ob er keine Grenzwerteinschränkungen hat.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
geofencing_zones |
Objekt | Erforderlich | Ein FeatureCollection -Objekt, wie in
IETF RFC 7946 beschrieben, ist ein Objekt mit einem Feld namens features . Der Wert von features ist ein JSON-Array.
Jedes Element des JSON-Arrays ist ein Feature -Objekt.
Jede Zone mit geografischer Eingrenzung, die zugehörigen Regeln und Attribute sowie die Definitionen der |
geofencing_zones.type |
String | Erforderlich | Auf FeatureCollection festgelegt, wie in
IETF RFC 7946 beschrieben. |
geofencing_zones.features |
Array | Erforderlich | Ein JSON-Array, in dem jedes Element des JSON-Arrays ein Feature -Objekt ist. |
geofencing_zones.features[].type |
String | Erforderlich | Auf Feature festgelegt, wie in
IETF RFC 7946 beschrieben. |
geofencing_zones.features[].geometry |
GeoJSON-Multipolygon | Erforderlich | Ein GeoJSON-Multipolygon, das beschreibt, wo Fahrten nicht beginnen, enden oder durchfahren werden können, sowie andere Einschränkungen. Durch eine Anordnung der Punkte im Uhrzeigersinn wird die vom Polygon umschlossene Fläche definiert, durch eine Anordnung gegen den Uhrzeigersinn die Fläche außerhalb des Polygons. Weitere Informationen finden Sie unter Rechte-Hand-Regel. |
geofencing_zones.features[].properties |
Objekt | Erforderlich | Ein Objekt, das die Reisezulagen und ‑beschränkungen definiert. |
geofencing_zones.features[].properties.rules |
Array | Optional | Ein Array von Objekten, wobei jedes Objekt genau eine Regel definiert. Wenn sich zwei oder mehr Regeln überschneiden, kollidieren oder auf andere Weise in Konflikt stehen, hat die Regel, die in der JSON-Datei zuerst definiert wurde, Vorrang. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
Array | Optional | Ein Array von Fahrzeugtyp-IDs, wobei jedes Element ein vehicle_type_id ist, für das Einschränkungen gelten.
Wenn kein vehicle_type_id angegeben ist, gelten die Einschränkungen für alle Fahrzeugtypen. |
geofencing_zones.features[].properties.rules[].ride_allowed |
Boolesch | Erforderlich | Gibt an, ob eine freistehende („nicht angedockte“) Fahrradtour in der Zone beginnen und enden kann. Mögliche Werte sind:
|
Das folgende Beispiel zeigt 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]
]]]
}
}]
}
Erforderlich: station_information.json (Dockingstation)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed werden die allgemeinen Informationen zu öffentlichen Leihfahrradstationen definiert.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
stations |
Array | Erforderlich | Ein Array von Objekten, wobei jedes Objekt genau eine Station definiert. |
stations[].station_id |
String | Erforderlich | Die ID der Station. |
stations[].name |
String | Erforderlich |
Der öffentliche Name des Bahnhofs in der lokalen Sprache der Stadt, in der sich der Bahnhof befindet. Die name muss, sofern verfügbar, mit den Schildern am Bahnhof übereinstimmen oder den Standort des Bahnhofs anhand einer Querstraße oder eines lokalen Orientierungspunkts widerspiegeln.
Verwenden Sie keine Abkürzungen wie „Str.“ für „Straße“, es sei denn, sie werden auf Schildern explizit verwendet. Die name muss in gemischter Groß- und Kleinschreibung angegeben werden, die den lokalen Konventionen für die Groß- und Kleinschreibung von Ortsnamen entspricht, und darf nicht nur aus Großbuchstaben bestehen.
|
stations[].lat |
Breitengrad | Erforderlich | Der WGS84-Breitengrad der Station im Dezimalgradformat. |
stations[].lon |
Längengrad | Erforderlich | Der WGS84-Längengrad der Station im Dezimalgradformat. |
stations[].capacity |
Nicht negative Ganzzahl | Optional | Eine nicht negative Ganzzahl, die die Gesamtzahl der an der Station installierten Andockpunkte darstellt, sowohl verfügbare als auch nicht verfügbare. |
stations[].rental_uris |
Objekt | Erforderlich |
Ein JSON-Objekt, das Miet-URIs für Android, iOS und das Web in den entsprechenden Feldern enthält. Wenn diese URIs angegeben sind, überschreiben sie die Standard-Deeplinks, die beim Onboarding des Anbieters festgelegt wurden. Dieses Feld ist in Version 2.2 optional, aber für die Implementierung mit Google erforderlich. |
stations[].rental_uris.android |
URI | Conditionally required |
Ein URI, der mit einem Dieser URI muss ein Deeplink sein, der sich auf die einzelne Station bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Stationen sein. Der Deeplink muss den Nutzer direkt zum Sender weiterleiten, ohne dass Aufforderungen, Interstitials oder Anmeldungen erforderlich sind. Nutzer müssen den Sender sehen können, auch wenn sie die App noch nie geöffnet haben. URIs müssen nicht unbedingt die Dieses Feld ist erforderlich, wenn der Partner eine Android-App für den Verleih hat. Beispiel für einen Android-App-Link:
|
stations[].rental_uris.ios |
URI | Conditionally required |
Ein URI, der auf iOS verwendet werden kann, um die Verleih-App für die Station zu starten.
Weitere Informationen dazu finden Sie im Apple-Artikel zu benutzerdefinierten URL-Schemas für iOS.
Der bereitgestellte Dieser URI muss ein Deeplink sein, der sich auf die einzelne Station bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Stationen sein. Der Deeplink muss den Nutzer direkt zum Sender weiterleiten, ohne dass Aufforderungen, Interstitials oder Anmeldungen erforderlich sind. Nutzer müssen den Sender sehen können, auch wenn sie die App noch nie geöffnet haben. URIs müssen nicht unbedingt die Dieses Feld ist erforderlich, wenn der Partner eine iOS-Leih-App hat. Beispiel für einen universellen iOS-Link:
|
stations[].rental_uris.web |
URL | Optional | Eine URL, die von einem Webbrowser verwendet werden kann, um weitere Informationen zum Mieten eines Fahrzeugs an dieser Station anzuzeigen. Diese URL muss ein Deeplink sein, der sich auf die einzelne Station bezieht, und darf keine allgemeine Verleihseite mit Informationen zu mehreren Stationen sein. Über den Deeplink muss der Nutzer direkt zum Sender gelangen, ohne dass er aufgefordert wird, etwas zu tun, oder dass er Interstitials oder Anmeldeseiten sieht. Achte darauf, dass Nutzer den Sender sehen können, auch wenn sie die Anwendung noch nie geöffnet haben. URLs müssen nicht unbedingt Wenn dieses Feld nicht festgelegt ist, werden Deeplinks für den Webbrowser nicht unterstützt. Beispielwert:
|
Das folgende Beispiel zeigt 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"
}
},
]
Erforderlich: station_status.json (angedocktes System)
Weitere Informationen finden Sie in der GBFS-Spezifikation.
In diesem Feed wird der aktuelle Status öffentlicher Bikesharing-Stationen definiert.
Feldname | Typ | Anforderung | Beschreibung |
---|---|---|---|
stations |
Array | Erforderlich | Ein Array von Objekten, wobei jedes Objekt genau einen Sender definiert. |
stations[].station_id |
String | Erforderlich | Die ID der Station. |
stations[].num_bikes_available |
Nicht negative Ganzzahl | Erforderlich |
Eine nicht negative Ganzzahl, die die Anzahl der funktionsfähigen Fahrräder angibt, die sich physisch an der Station befinden und möglicherweise zur Vermietung angeboten werden. Um festzustellen, ob an der Station derzeit Fahrräder vermietet werden, müssen Sie das Feld |
stations[].vehicle_types_available |
Array | Optional |
Ein Array von Objekten, das die Gesamtzahl der Fahrzeuge definiert, kategorisiert nach dem jeweiligen Fahrzeugtyp, der an einer Station verfügbar ist. Jedes Objekt modelliert die Gesamtzahl der Fahrzeuge für den zugehörigen Fahrzeugtyp. Die Gesamtzahl der Fahrzeuge aus jedem dieser Objekte muss dem Wert im Feld |
stations[].vehicle_types_available[].vehicle_type_id |
ID | Erforderlich |
Die |
stations[].vehicle_types_available[].count |
Nicht negative Ganzzahl | Erforderlich |
Die Gesamtzahl der verfügbaren Fahrzeuge für den entsprechenden |
stations[].num_docks_available |
Nicht negative Ganzzahl | Conditionally required |
Das Feld ist erforderlich, sofern die Station nicht über eine unbegrenzte Anzahl von Andockplätzen verfügt. Virtuelle Stationen haben beispielsweise eine unbegrenzte Anzahl an Andockplätzen und das Feld ist nicht erforderlich. Eine nicht negative Ganzzahl, die die Gesamtzahl der funktionsfähigen Docks an der Station angibt, die für die Rückgabe von Fahrzeugen geeignet sind. Um festzustellen, ob an der Station derzeit Fahrräder zurückgegeben werden können, müssen Sie das Feld |
stations[].is_installed |
Boolesch | Erforderlich |
Ein boolescher Wert, der angibt, ob die Station derzeit auf der Straße installiert ist. Wenn die Ladestation auf der Straße installiert ist, stellen Sie den Wert auf Wenn die Station nicht auf der Straße installiert ist, legen Sie den Wert auf |
stations[].is_renting |
Boolesch | Erforderlich |
Ein boolescher Wert, der angibt, ob an der Station derzeit Fahrräder ausgeliehen werden. Wenn an der Station derzeit Fahrräder verliehen werden, legen Sie den Wert auf Wenn an der Station derzeit keine Fahrräder vermietet werden, setzen Sie den Wert auf |
stations[].is_returning |
Boolesch | Erforderlich |
Ein boolescher Wert, der angibt, ob an der Station derzeit Fahrräder zurückgegeben werden können. Wenn an der Station derzeit Fahrräder zurückgegeben werden können, auf Wenn an der Station derzeit keine Rückgabe von Fahrrädern möglich ist, setzen Sie den Wert auf |
Hier ein Beispiel für 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
},
]