2.0 KiB
2.0 KiB
Design: Vehicle Incident And Information Preview
Boundary
This is browser-only Cesium preview state. It changes neither generated OSM data nor package/ assets.
Vehicle routes and models remain _preview/ resources; refresh resets all vehicle event state.
Data Model
Each object returned by addCruiseVehicle() gains:
{
id: "vehicle-1",
modelName: "car_a01_002",
status: "normal" | "breakdown" | "accident",
incidentNote: "",
motion: { state },
markerEntity
}
The current route distance remains the single motion source. The clock tick leaves it unchanged while
status is not normal; returning to normal resumes from that position.
Interaction Flow
- Vehicle Cesium Entities carry a
vehicleIdproperty. - A
ScreenSpaceEventHandlerpicks a clicked entity, resolves its vehicle, synchronizes the existing vehicle selector, and opens a positioned information card. - The card displays vehicle number, model family, route label/length, configured speed, state, and note.
- Card controls set normal/breakdown/accident and persist only in the in-memory vehicle object.
- State changes update marker visibility, the route material, card content, and Cesium render request.
Visual Contract
- Normal: no marker; original route color; motion active.
- Breakdown: yellow wrench label above the vehicle; route retains its original color; motion frozen.
- Accident: red warning-triangle label above the vehicle; route material becomes red; motion frozen.
- Marker positions use the same vehicle
CallbackProperty, so they move with the vehicle before an event and remain at the incident location while stopped.
Compatibility And Risks
- Picking must ignore routes, static models, and signal entities.
- No route must retain the existing disabled cruise controls and never show a card.
- The card must be HTML/CSS UI, not Cesium InfoBox, because the viewer deliberately disables InfoBox.
- The feature must not alter signal runtime behavior or vehicle asset URLs.