mirror of
https://github.com/cjdenio/uta-trax-api.git
synced 2026-10-03 16:06:19 +00:00
update in realtime!
This commit is contained in:
2 files changed
+35
-16
No files matched your search
@@ -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
@@ -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 @@
|
|||||||
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
|
'© <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>
|
||||||
|
|||||||
Reference in new issue
Block a user