Erstellen einer App für Fahrpläne öffentlicher Verkehrsmittel in Echtzeit
Published: 2024-03-01 16:52:27

Es gibt einen Ort, an dem Echtzeitinformationen, sich verändernde Szenarien öffentlicher Verkehrssysteme und das Internet der Dinge (IoT) zusammentreffen - nennen wir es das Internet of Transportation Things (IoTT). Man kann es sich als eine hochentwickelte und benutzerfreundliche Verkehrs-App vorstellen, die mit Echtzeitdaten arbeitet. Mit Giganten wie IBM, Moovit und Google Maps, die aus dem "intelligenten Verkehr" Kapital schlagen wollen, ist das IoTT in der Lage, die Art und Weise, wie wir den Verkehr wahrnehmen, zu revolutionieren und ihn für tägliche Pendler zugänglicher zu machen.

Als Entwickler, insbesondere im Bereich der Entwicklung mobiler Anwendungen, fragen Sie sich vielleicht, wie sich diese neue Entwicklung auf Sie auswirkt und wie Sie daran beteiligt werden können. Egal, ob Sie ein iOS- oder Android-Enthusiast sind, ein Echtzeit-Datenstromnetzwerk wie PubNub kann Ihr Tor sein, um durch diesen Wandel zu navigieren. Diese neue Welle der Verarbeitung von Informationen des öffentlichen Nahverkehrs bringt die aufregende Zukunft von IoTT näher an die Realität heran. Stellen Sie sich eine Zeit vor, in der Sie vielleicht eine Nahverkehrs-App für mobile Geräte entwickeln, die es den Geräten ermöglicht, sich mit einem Kanal zu verbinden und zu kommunizieren, um Dinge wie aktuelle Standorte oder Ziele zu übermitteln. Stellen Sie sich eine Zukunft vor, in der all diese Echtzeit-Informationen dazu beitragen, den Transport auf der Grundlage dieser Informationen zu gruppieren und so die Effizienz zu steigern.

PubNub ist ein leistungsfähiges Tool, das an der Spitze dieser Entwicklung steht und mit seiner hochmodernen Technologie und seinen vertrauenswürdigen Dienstleistungen im Bereich des IoT, unterstützt durch unsere renommierten Zertifizierungen und Qualifikationen, immer wieder Innovationen hervorbringt. Dies bietet Ihnen die vielversprechende Möglichkeit, Softwareanwendungen zu entwickeln, die die Funktionsweise von Verkehrssystemen neu definieren könnten. Diese Art von Anwendungen wird in der Verkehrsbranche immer wichtiger und erweist sich als vorteilhaft für Pendler, Verkehrsbetriebe und Verkehrsdienstleister.

Wie fängt man also an? Machen wir uns die Hände mit einem einfachen Beispiel schmutzig. Heutzutage sind öffentliche Daten in Hülle und Fülle vorhanden und können genutzt werden. Viele Städte bieten öffentliche Daten über einfach zu nutzende APIs an, von Daten zur Raumordnung bis hin zu U-Bahn-Zeiten. In diesem Artikel nehmen wir die BART (Bay Area Rapid Transit)-API als Grundlage - eine API, die eine breite Palette von Metriken, Statistiken und Fahrplänen für das größte Schienensystem der Bay Area bereitstellt -, um eine Anwendung zu erstellen, die Echtzeit-Updates für Fahrpläne ermöglicht, was eine große Bereicherung für Apps für den öffentlichen Verkehr sein kann.

Wie man eine Transport-App erstellt: Umfang der Programmierung
--------------------------------------------------------------

![](https://www.pubnub.com/cdn/3prze68gbwl1/asset-17suaysk1qa1hy3/51833020ec055e2ee9ecf7de3add5e60/times.png)

In diesem Artikel erfahren Sie, wie Sie die BART-API nutzen können, um eine Echtzeit-Anwendung für öffentliche Verkehrsmittel zu erstellen, die ihren Nutzern Echtzeit-Updates und Service-Warnungen bietet, ähnlich wie Google Maps, Moovit und Uber. Ziel ist es, die Benutzererfahrung zu verbessern, indem wertvolle Informationen von Abfahrtszeiten bis hin zu möglichen Betriebsunterbrechungen bereitgestellt werden. Sie lernen, wie Sie Standorte von Bahnhöfen (z. B. U-Bahn-Stationen oder Bushaltestellen) abrufen und in Geohashes umwandeln können. Nachdem Sie die Informationen gesammelt haben, ermitteln Sie den Standort des Nutzers in San Francisco (oder fälschen ihn in unserem Fall). Anschließend gleichen Sie den Standort des Nutzers mit nahegelegenen Bahnhöfen ab, was weitere API-Aufrufe zum Abrufen relevanter Daten erfordert.

Sobald Sie die geschätzten Abfahrtszeiten erhalten haben, zeigen Sie diese in einer Infobox auf der Karte an. Der gesamte Prozess wird in einem Schritt-für-Schritt-Tutorial vereinfacht, das von Codeschnipseln und Erklärungen begleitet wird.

Erste Schritte mit Ihrer Fahrplan-App
-------------------------------------

Um Ihre Echtzeit-Transit-App zu erstellen, ist der Aufbau ähnlich wie in unserem [vorherigen Tutorial über JavaScript-Geohashing](https://pubnub.com/blog/calculating-geolocation-proximity-w-javascript-geohashing/). Mit Hilfe effektiver Algorithmen zur Reiseplanung und unter Ausnutzung der Leistungsfähigkeit von Echtzeitdaten können Sie eine einzigartige, benutzerfreundliche mobile App für iOS, Android und andere mobile Geräte erstellen, die Echtzeit-Updates für den öffentlichen Nahverkehr effektiv verwalten kann.

Zunächst benötigen Sie "node" und "npm" für das ETA-Modul Ihrer App. Wenn Sie mit diesen Begriffen nicht vertraut sind, dann werfen Sie einen Blick auf die [umfassende Einführung in Node.js von PubNub](https://pubnub.com/blog/node-js-supercharged-by-pubnub/).

Die verwendeten Node-Pakete sind:

-   [Browserify](http://browserify.org/), um Node-Pakete im Browser zu verwenden.
    
-   [ngeohash](https://github.com/sunng87/node-geohash) zur Kodierung von Breiten- und Längengraden in einen String.
    
-   [request](https://github.com/request/request) für HTTP-Anfragen außerhalb des Browsers.
    
-   [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) für die Umwandlung von XML-Rückgaben in JSONs.
    

Diese Pakete bieten die notwendigen Funktionen, um APIs aufzurufen, Daten zu verarbeiten und die für unsere Anwendung erforderlichen Aufgaben auszuführen. Wenn Sie sich den Beispielcode ansehen, werden Sie feststellen, dass diese Pakete fehlen. Sie müssen einfach zum Basisordner des Projekts navigieren und \`npm install\` in die Befehlszeile eingeben. Dadurch werden die Pakete gemäß den Anforderungen in \`package.json\` installiert.

In den folgenden Abschnitten werden wir uns mit den Besonderheiten der Arbeit mit Geolokalisierungsdaten, der effizienten Verarbeitung von Push-Benachrichtigungen, der effektiven Anzeige von Fahrzeugstandorten und der Schaffung einer großartigen Benutzererfahrung mit Ihrer Anwendung befassen. Bleiben Sie dran!

Benutzer-Hash und Kartenstandort für Ihre Transitfahrplan-Anwendung
-------------------------------------------------------------------

Die HTML5 Geolocation API ist ein praktisches Tool, das den Zugriff auf den geografischen Standort (Längen- und Breitengrad) auf der Grundlage von Geräte-IP, RFID, WIFI, Bluetooth MAC-Adresse, GPS oder Benutzereingaben ermöglicht. Im Folgenden wird beschrieben, wie Sie damit den Standort des Benutzers abrufen können, um eine Echtzeitverfolgung zu ermöglichen, ähnlich wie es Verkehrsanwendungen wie Uber oder Google Maps tun:

```js
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
  //...
```

Dieser Code prüft, ob der Browser Geolocation unterstützt, und ermittelt dann die aktuelle Position des Benutzers. Für Testzwecke in diesem Tutorial werden wir unsere Koordinaten so einstellen, dass sie einen Standort in der Bay Area bezeichnen.

```js
    that.lat = 37.6;
    that.lng = -122.4;
    var lat = that.lat;
    var lng = that.lng;
```

Unsere Anwendung benötigt die Stationsdaten, um sie auf der Karte anzuzeigen. Wir importieren diese Daten aus \`app.js\`.

```js
    var app = require("./app.js");
```

Als nächstes legen wir lokale Variablen für unsere Daten fest:

```js
    var json_data, hash_table, hash_matches, destinations;
    …
    json_data_formatted = app.formatted_json;
    hash_table = app.hash_table;
    hash_matches = app.hash_matches;
    destinations = app.destinations;
```

Als nächstes werden wir PubNub und Google Maps integrieren:

```js
    pubs();
    google.maps.event.addDomListener(window, 'load', initialize());
```

Die Funktion \`pubs()\` wird ab Zeile 130 aufgerufen und initialisiert PubNub mit Ihren eindeutigen Publish- und Subscribe-Keys. Wenn Sie keine PubNub-Schlüssel haben, können Sie [sich für ein PubNub-Konto anmelden](https://admin.pubnub.com/signup/), um sie zu erhalten.

```js
function pubs() {
     var pubnub = new PubNub({
       publishKey: "publish_key",
       subscribeKey: "subscribe_key",
       userId: "UUID"
   });
},
```

Die Logik für die Google Map ist aus [einem der vorherigen Artikel](https://pubnub.com/blog/calculating-geolocation-proximity-w-javascript-geohashing/) entlehnt. Die PubNub-Verbindung wartet auf Koordinatenmeldungen, die an den Kanal "mymaps" gesendet werden, und verschiebt dann den Marker des Nutzers auf der Grundlage der empfangenen Informationen.

Die Funktion \`initialize()\` von Google Maps wird aufgerufen und fügt der Karte Eigenschaften hinzu. Wichtig ist, dass für jede "Hash\_match" eine Markierung hinzugefügt wird.

```js
    var business_marker = new google.maps.Marker({position: {lat: match_lat, lng: match_lng}, map: map});
    business_marker.setMap(map);
```

Dann wird ein Ereignis-Listener für Infofenster hinzugefügt.

```js
    google.maps.event.addListener(business_marker, 'mouseover', function() {
      infowindow.open(map,business_marker);
    });
    google.maps.event.addListener(business_marker, 'mouseout', function() {
      infowindow.close(map,business_marker);
```

Suche nach Zugfahrplänen für Ihre Transit-App
---------------------------------------------

Nachdem Sie sich um die Anzeige von Elementen auf der Karte gekümmert haben, besteht der nächste Schritt darin, Informationen über Abfahrtszeiten hinzuzufügen. Dazu kehren Sie zu \`app.js\` zurück und füllen die hash\_matches mit Daten für jeden der Treffer.

In diesem Beispiel speichern wir nur die Daten für den Bahnhof Millbrae. Wir machen einen Ajax-Aufruf für die Millbrae-Daten:

```js
    $.ajax({
      type: "GET",
      url: "data/MLBR.json",
      dataType: "json",
      success: function(file) {
        main_two(file);
      }
    });
```

Diese Funktion, \`main\_two\`, formatiert die Daten und bereitet sie für die Interaktion mit Google Maps vor.

### Anzeige von Fahrplänen für Ihren Transitfahrplan

Rufen Sie nun erneut \`gmap.js\` auf. Gehen Sie hier in einer Schleife durch die verschiedenen Zielnamen. In diesem Fall wurde \`Millbrae\` fest codiert, aber idealerweise würden Sie eine Variable verwenden, um Abkürzungen zwischen \`hash\_matches\` und \`destinations\` abzugleichen und die entsprechenden Zeiten anzuzeigen.

```js
    var times = destination.times;
    dest_string = dest_string + "<p><i>" + destination.abbreviation + ":" + "</i><p>";
    times.forEach(function(time) {
      dest_string = dest_string + " " + time;
    });
```

Als nächstes geben Sie das Infofenster an:

```js
    var infowindow = new google.maps.InfoWindow({
      content: "<b>" + BusinessName + "</b>" +
    "<p>" + dest_string + "</p></p></p>"
    });
```

Das war's! Sie haben erfolgreich Elemente auf einer Karte angezeigt und Informationen über Abfahrtszeiten hinzugefügt. Wenn Sie mehr über Echtzeit-Mapping und Geolokalisierung mit APIs wie MapBox, MapKit und Google Maps erfahren möchten, schauen Sie sich unsere [anderen Tutorials](https://pubnub.com/blog/category/tutorials/) an.

PubNub erleben
--------------

Wie wäre es, ein Gefühl für PubNub zu bekommen? In unserer [Live Tour](https://www.pubnub.com/tour/introduction/) lernen Sie in weniger als 5 Minuten die wesentlichen Konzepte hinter jeder PubNub-basierten App kennen. Sie können sich für einen PubNub-Account [anmelden](https://admin.pubnub.com/signup/) und mit Ihrem Projekt [loslegen](https://www.pubnub.com/docs). Die Arbeit mit PubNub kann Ihre App mit Echtzeit-Updates, Push-Benachrichtigungen und einer benutzerfreundlichen Oberfläche zum Leben erwecken und eröffnet neue Möglichkeiten für Transport-Apps.

Egal, ob Sie Apple- oder Android-Nutzer sind, ob Sie mit dem Bus, der U-Bahn oder dem Fahrrad pendeln, eine Echtzeit-Verkehrs-App ist unerlässlich. Indem Sie die leistungsstarken APIs von PubNub und die leicht zugänglichen GTFS-Daten der Verkehrsbetriebe nutzen, können Sie dazu beitragen, den öffentlichen Nahverkehr umzugestalten und eine effiziente, benutzerfreundliche digitale Lösung für Pendler, Verkehrsbetriebe und Agenturen gleichermaßen zu schaffen. Stellen Sie sich vor - keine Staus mehr, keine Ungewissheit über Ankunftszeiten, sondern ein nahtloser öffentlicher Nahverkehr mit Echtzeit-Updates. Warum also warten? Begeben Sie sich mit PubNub auf die Reise zur Umgestaltung des Verkehrssystems.

#### Inhalt

[Wie man eine Transport-App erstellt: ProgrammierumfangEinstieg](#h-0) in[Ihre](#h-1)[Verkehrsplan-AppBenutzer-Hash und Kartenstandort für Ihre Verkehrsplan-AppSuche](#h-2)[nach Zugfahrplänen für Ihre Verkehrsplan-AppAnzeige von](#h-3)[Fahrplänen für Ihre Verkehrsplan-AppErleben Sie](#h-4)[PubNub](#h-5)

Wie kann PubNub Ihnen helfen?
=============================

Dieser Artikel wurde ursprünglich auf [PubNub.com](https://www.pubnub.com/blog/how-to-build-a-realtime-public-transit-schedule-app/) veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben
--------------

Sehen Sie sich die [Live Tour](https://www.pubnub.com/tour/introduction/) an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten
----------

Melden Sie sich für einen [PubNub-Account](https://admin.pubnub.com/signup/) an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie
------------

Mit den [PubNub-Dokumenten](https://www.pubnub.com/docs) können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder [SDK](https://www.pubnub.com/docs)