Jak stworzyć aplikację do tworzenia rozkładów jazdy transportu publicznego w czasie rzeczywistym?

PubNub Developer Relations - Mar 1 - - Dev Community

Istnieje miejsce, w którym spotykają się informacje w czasie rzeczywistym, zmieniające się scenariusze systemów transportu publicznego i Internet Rzeczy (IoT) - nazwijmy to Internetem Rzeczy Transportowych (IoTT). Można o nim myśleć jako o wysoce zaawansowanej i przyjaznej dla użytkownika aplikacji tranzytowej, która działa w oparciu o dane w czasie rzeczywistym. Dzięki tytanom takim jak IBM, Moovit i Google Maps, którzy chcą wykorzystać "inteligentny transport", IoTT może zrewolucjonizować sposób, w jaki postrzegamy transport, czyniąc go bardziej dostępnym dla osób codziennie dojeżdżających do pracy.

Jako programista, szczególnie zajmujący się tworzeniem aplikacji mobilnych, możesz zastanawiać się, jak ten nowy rozwój wpływa na Ciebie i jak możesz się w niego zaangażować. Niezależnie od tego, czy jesteś entuzjastą iOS, czy Androida, sieć strumieni danych w czasie rzeczywistym, taka jak PubNub, może być bramą do nawigacji po tej morskiej zmianie. Ta nowa fala obsługi informacji o transporcie publicznym przybliża ekscytującą przyszłość IoTT do rzeczywistości, wyobrażając sobie czas, w którym możesz opracować aplikację tranzytową na urządzenia mobilne, która umożliwia urządzeniom łączenie się z kanałem i komunikację, nadając takie rzeczy, jak bieżące lokalizacje lub miejsca docelowe. Wyobraź sobie przyszłość, w której wszystkie te informacje w czasie rzeczywistym pomagają w grupowaniu transportu w oparciu o te informacje w celu uzyskania najwyższej wydajności.

PubNub to potężne narzędzie, które znajduje się w czołówce tej ewolucji i nadal wprowadza innowacje dzięki najnowocześniejszej technologii i zaufanym usługom w dziedzinie IoT, popartym naszymi renomowanymi certyfikatami i kwalifikacjami. Daje to obiecującą możliwość tworzenia aplikacji, które mogą na nowo zdefiniować sposób działania systemów transportowych. Tego rodzaju aplikacje stają się coraz ważniejsze w branży transportowej, okazując się korzystne dla osób dojeżdżających do pracy, agencji tranzytowych, a także dostawców usług transportowych.

Jak więc zacząć? Zabrudźmy sobie ręce prostym przykładem. W dzisiejszych czasach dane publiczne są obfite i dostępne do pobrania. Od publicznych danych dotyczących zagospodarowania przestrzennego po czasy przejazdu metra, wiele miast oferuje dane publiczne za pośrednictwem łatwych do wykorzystania interfejsów API. W tym artykule jako podstawę przyjmiemy API BART (Bay Area Rapid Transit) - API, które zapewnia szeroką gamę wskaźników, statystyk i rozkładów jazdy dla największego systemu kolejowego w Bay Area - aby stworzyć aplikację z harmonogramem transportu obsługującą aktualizacje w czasie rzeczywistym, która może być dużym impulsem dla aplikacji transportu publicznego.

Jak stworzyć aplikację transportową: Zakres programowania

W tym artykule dowiesz się, jak wykorzystać interfejs API BART do zbudowania aplikacji rozkładu jazdy transportu publicznego w czasie rzeczywistym, prezentującej użytkownikom aktualizacje w czasie rzeczywistym i powiadomienia o usługach, podobnie jak Mapy Google, Moovit i Uber. Ma to na celu poprawę komfortu użytkowania poprzez dostarczanie cennych informacji, od czasów odjazdu po możliwe zakłócenia w świadczeniu usług. Dowiesz się, jak pobierać lokalizacje stacji (takich jak stacja metra lub przystanek autobusowy) i konwertować je na geohashe. Po zebraniu informacji wskażesz lokalizację użytkownika w San Francisco (lub sfałszujesz ją w naszym przypadku), a następnie dopasujesz lokalizację użytkownika do pobliskich stacji, co będzie wymagało większej liczby wywołań API w celu pobrania odpowiednich danych.

Po uzyskaniu szacowanych czasów odjazdu, wyświetlisz je na infoboxie mapy. Cały proces został uproszczony w samouczku krok po kroku, któremu towarzyszą fragmenty kodu i wyjaśnienia.

Rozpoczęcie pracy z aplikacją harmonogramu transportu

Aby utworzyć aplikację tranzytową w czasie rzeczywistym, konfiguracja jest podobna do naszego poprzedniego samouczka na temat geohashingu JavaScript. Za pomocą skutecznych algorytmów planowania podróży i wykorzystując moc danych w czasie rzeczywistym, można stworzyć unikalną, przyjazną dla użytkownika aplikację mobilną dla systemów iOS, Android i innych urządzeń mobilnych, która może skutecznie zarządzać aktualizacjami w czasie rzeczywistym dotyczącymi transportu publicznego.

Po pierwsze, będziesz potrzebował "node" i "npm" dla modułu ETA swojej aplikacji. Jeśli nie znasz tych terminów, zapoznaj się z obszernym wprowadzeniem do Node.js w PubNub.

Używane pakiety node to:

  • Browserify do korzystania z pakietów node w przeglądarce.

  • ngeohash do kodowania szerokości i długości geograficznej w ciąg znaków.

  • request do żądań HTTP poza przeglądarką.

  • xml2js do konwersji zwrotów XML na JSON.

Pakiety te zapewniają niezbędne funkcje do wywoływania interfejsów API, obsługi danych i wykonywania zadań wymaganych przez naszą aplikację. Jeśli spojrzysz na przykładowy kod, zauważysz, że brakuje tych pakietów. Wystarczy przejść do folderu bazowego projektu i wpisać npm install\ w wierszu poleceń. Spowoduje to zainstalowanie pakietów na podstawie wymagań w pliku package.json\.

W kolejnych sekcjach zajmiemy się szczegółami pracy z danymi geolokalizacyjnymi, wydajnym przetwarzaniem powiadomień push, skutecznym wyświetlaniem lokalizacji pojazdów i tworzeniem doskonałego doświadczenia użytkownika z aplikacją. Bądź na bieżąco!

Hash użytkownika i lokalizacja na mapie dla aplikacji rozkładu jazdy tranzytu

HTML5 Geolocation API to przydatne narzędzie, które umożliwia dostęp do lokalizacji geograficznej (długości i szerokości geograficznej) w oparciu o adres IP urządzenia, RFID, WIFI, adres MAC Bluetooth, GPS lub dane wprowadzone przez użytkownika. Oto jak go użyć, aby uzyskać lokalizację użytkownika w celu zapewnienia śledzenia w czasie rzeczywistym, podobnie jak robią to aplikacje transportowe, takie jak Uber czy Google Maps:

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
  //...
Enter fullscreen mode Exit fullscreen mode

Ten kod sprawdza, czy przeglądarka obsługuje geolokalizację, a następnie pobiera bieżącą pozycję użytkownika. Do celów testowych w tym samouczku ustawimy nasze współrzędne tak, aby oznaczały lokalizację w obszarze Bay.

    that.lat = 37.6;
    that.lng = -122.4;
    var lat = that.lat;
    var lng = that.lng;
Enter fullscreen mode Exit fullscreen mode

Nasza aplikacja będzie wymagać danych stacji do wyświetlenia na mapie. Importujemy te dane z pliku app.js\.

    var app = require("./app.js");
Enter fullscreen mode Exit fullscreen mode

Następnie ustawiamy zmienne lokalne dla naszych danych:

    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;
Enter fullscreen mode Exit fullscreen mode

Następnie zintegrujemy PubNub i Google Maps:

    pubs();
    google.maps.event.addDomListener(window, 'load', initialize());
Enter fullscreen mode Exit fullscreen mode

Funkcja pubs()\ jest wywoływana od linii 130 i inicjalizuje PubNub z unikalnymi kluczami publikowania i subskrypcji. Jeśli nie masz kluczy PubNub, możesz założyć konto Pub Nub, aby je uzyskać.

function pubs() {
     var pubnub = new PubNub({
       publishKey: "publish_key",
       subscribeKey: "subscribe_key",
       userId: "UUID"
   });
},
Enter fullscreen mode Exit fullscreen mode

Logika mapy Google została zapożyczona z jednego z poprzednich artykułów. Połączenie PubNub nasłuchuje komunikatów o współrzędnych wysyłanych do kanału "mymaps", a następnie przesuwa znacznik użytkownika na podstawie otrzymanych informacji.

Funkcja initialize()\ Google Maps jest wywoływana, dodając właściwości do mapy. Co ważne, dodaje ona znacznik dla każdego hash\_match\.

    var business_marker = new google.maps.Marker({position: {lat: match_lat, lng: match_lng}, map: map});
    business_marker.setMap(map);
Enter fullscreen mode Exit fullscreen mode

Następnie dodawany jest detektor zdarzeń dla okien informacyjnych.

    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);
Enter fullscreen mode Exit fullscreen mode

Wyszukiwanie rozkładów jazdy pociągów dla aplikacji tranzytowej

Po zajęciu się wyświetlaniem elementów na mapie, następnym krokiem jest dodanie informacji o godzinach odjazdu. Osiąga się to poprzez powrót do app.js\ i wypełnienie hash_matches danymi dla każdego z dopasowań.

W tym przykładzie zapisujemy dane tylko dla stacji Millbrae. Wykonujemy wywołanie Ajax na danych Millbrae:

    $.ajax({
      type: "GET",
      url: "data/MLBR.json",
      dataType: "json",
      success: function(file) {
        main_two(file);
      }
    });
Enter fullscreen mode Exit fullscreen mode

Ta funkcja, main\_two\, formatuje dane i przygotowuje je do interakcji z Google Maps.

Wyświetlanie rozkładów jazdy dla harmonogramu tranzytowego

Wróćmy teraz do pliku gmap.js\. Tutaj przechodzimy przez różne nazwy miejsc docelowych. W tym przypadku Millbrae\ zostało zakodowane na sztywno, ale idealnie byłoby użyć zmiennej do dopasowania skrótów między hash\_matches\ i destinations\, wyświetlając odpowiednie czasy.

    var times = destination.times;
    dest_string = dest_string + "<p><i>" + destination.abbreviation + ":" + "</i><p>";
    times.forEach(function(time) {
      dest_string = dest_string + " " + time;
    });
Enter fullscreen mode Exit fullscreen mode

Następnie określ okno informacyjne:

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

To wszystko! Pomyślnie wyświetliłeś elementy na mapie i dodałeś informacje o godzinach odlotów. Jeśli chcesz dowiedzieć się więcej na temat mapowania w czasie rzeczywistym i geolokalizacji przy użyciu interfejsów API, takich jak MapBox, MapKit i Google Maps, zapoznaj się z naszymi innymi samouczkami.

Poznaj PubNub

Co powiesz na zapoznanie się z PubNub? Zapoznaj się z naszym Live Tour, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut. Możesz założyć konto PubNub i rozpocząć pracę nad swoim projektem. Praca z PubNub może ożywić Twoją aplikację dzięki aktualizacjom w czasie rzeczywistym, powiadomieniom push i przyjaznemu dla użytkownika interfejsowi, otwierając nowe możliwości dla aplikacji transportowych.

Niezależnie od tego, czy jesteś użytkownikiem Apple czy Androida, czy dojeżdżasz do pracy autobusem, metrem czy rowerem, posiadanie pod ręką aplikacji transportowej w czasie rzeczywistym ma kluczowe znaczenie. Wykorzystując potężne interfejsy API PubNub i łatwo dostępne dane GTFS z agencji transportowych, możesz przyczynić się do przekształcenia transportu publicznego, tworząc wydajne, przyjazne dla użytkownika rozwiązanie cyfrowe dla osób dojeżdżających do pracy, usług transportowych i agencji. Pomyśl tylko - koniec z korkami, koniec z niepewnością co do czasu przyjazdu, po prostu płynny transport publiczny z aktualizacjami w czasie rzeczywistym. Po co więc czekać? Wskoczmy w tę podróż przekształcania systemu transportu z PubNub.

Spis treści

Jak stworzyć aplikację transportową: Zakres programowaniaRozpoczęcie pracy z aplikacją do tworzenia rozkładówjazdyUżytkownikHash i lokalizacja na mapie dla aplikacji do tworzenia rozkładów jazdyWyszukiwanierozkładów jazdy pociągów dla aplikacji do tworzenia rozkładów jazdyWyświetlanierozkładów jazdy dla aplikacji do tworzenia rozkładów jazdy Doświadczenie zPubNub

Jak PubNub może ci pomóc?

Ten artykuł został pierwotnie opublikowany na PubNub .com

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub

Sprawdź Live Tour, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację

Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij

Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .