feat: v0.22.0 — ISS-022/025/027 hover route trace on job list, on-board rows and relocation panel
This commit is contained in:
@@ -85,6 +85,33 @@ export function greatCircleArc(from: AirportCoord, to: AirportCoord): [number, n
|
||||
return coords;
|
||||
}
|
||||
|
||||
// ISS-022/025/027 (v0.22.0): the hover route trace — one great-circle LineString between two
|
||||
// airports, drawn top-most while a panel row hovers (job-list rows, on-board cargo rows, the
|
||||
// Relocate section). Empty collection when either endpoint is missing from the dataset — never
|
||||
// guessed; the '' sentinel (no hovered target) resolves to nothing and yields the same.
|
||||
export function hoverRouteGeoJson(
|
||||
fromIcao: string,
|
||||
toIcao: string,
|
||||
airportsByIcao: ReadonlyMap<string, AirportCoord>,
|
||||
): FeatureCollection<MapLineFeature> {
|
||||
const from = airportsByIcao.get(fromIcao);
|
||||
const to = airportsByIcao.get(toIcao);
|
||||
if (!from || !to) return EMPTY_LINES;
|
||||
return {
|
||||
type: 'FeatureCollection',
|
||||
features: [
|
||||
{
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'LineString',
|
||||
coordinates: greatCircleArc(from, to),
|
||||
},
|
||||
properties: { planeId: '' }, // no owning plane — a pure hover overlay
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
// One LineString per FLYING plane — its current leg from locationIcao to dest_icao.
|
||||
// Grounded planes draw nothing; a flying plane missing either endpoint from the
|
||||
// dataset is skipped, never guessed. The line is sampled along the great circle
|
||||
|
||||
Reference in New Issue
Block a user