update in realtime!

This commit is contained in:
cjdenio committed 2025-10-21 22:22:31 -06:00
1 parent a9aa861931
commit 31fefd5cab
2 files changed
+35 -16

No files matched your search

+4
View File
@@ -186,11 +186,15 @@ func feedifyVehicles(vehicles []*pb.VehiclePosition) pb.VehicleFeed {
} }
func main() { func main() {
fmt.Println("Opening database...")
_db, err := sql.Open("sqlite3", "uta-gtfs.db") _db, err := sql.Open("sqlite3", "uta-gtfs.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
fmt.Println("Loading trip data...")
scheduleDb = _db scheduleDb = _db
if err := loadTrips(); err != nil { if err := loadTrips(); err != nil {
log.Fatalln(err) log.Fatalln(err)
+31 -16
View File
@@ -35,6 +35,7 @@
4: "#77777a", 4: "#77777a",
5: "#c227b9", 5: "#c227b9",
}; };
let markers = []
var map = L.map("map").setView([40.656734, -111.890818], 12); var map = L.map("map").setView([40.656734, -111.890818], 12);
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
@@ -43,24 +44,38 @@
'&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>', '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
}).addTo(map); }).addTo(map);
protobuf.load("/schema.proto").then(async (root) => { function clearMap() {
const bin = await fetch("/api").then((r) => r.arrayBuffer()); for (const marker of markers) {
const { vehicles } = root marker.remove();
.lookupType("VehicleFeed") }
.decode(new Uint8Array(bin));
vehicles.forEach((vehicle) => { markers = [];
L.circleMarker([vehicle.lat, vehicle.lon], { }
fillColor: COLORS[vehicle.line],
color: COLORS[vehicle.line], protobuf.load("/schema.proto").then((root) => {
fillOpacity: 0.5, setInterval(async () => {
radius: 8, const bin = await fetch("/api").then((r) => r.arrayBuffer());
}) const { vehicles } = root
.addTo(map) .lookupType("VehicleFeed")
.bindPopup( .decode(new Uint8Array(bin));
`${vehicle.headsign}<br />@ ${vehicle.nearestStation.name}`
clearMap();
vehicles.forEach((vehicle) => {
markers.push(
L.circleMarker([vehicle.lat, vehicle.lon], {
fillColor: COLORS[vehicle.line],
color: COLORS[vehicle.line],
fillOpacity: 0.5,
radius: 8,
})
.addTo(map)
.bindPopup(
`${vehicle.headsign}<br />@ ${vehicle.nearestStation.name}`
)
); );
}); });
}, 5000);
}); });
</script> </script>
</body> </body>