Skip to content

Amenity System

Categories

15 amenity categories defined in shared/src/models/Floor.ts:

CategoryIcon GlyphLabelConnector?
toiletWCRestroomNo
escalatorEscalatorYes
elevatorLiftYes
stairsStairsYes
atm$ATMNo
infoiInformationNo
exitExitNo
parkingPParkingNo
parents_room👶Parents RoomNo
ev_chargingEV ChargingNo
valet🔑ValetNo
taxi🚖TaxiNo
bus🚌BusNo
rideshare🚗RideshareNo
concierge🛎ConciergeNo

Elevator Highlighting

Elevators render differently from other amenities to stand out on the floor plan:

  • Yellow fill (#FACC15) instead of the default theme circle fill
  • Amber stroke (#B45309), 1.6x thicker than standard
  • 1.25x larger circle and icon
  • Dark icon color (#1F2937) for contrast
  • Connector badge position adjusts for the larger circle radius

Amenity Classification (Mappedin)

The Mappedin parser (agent/parsers/mappedin.py) classifies amenities from two sources:

Primary: Location-based classification

The public_1_location_*.json file contains typed amenity entries with names like "ATM", "Parents Room", "EV Charging Station". These are matched against 24+ name patterns in AMENITY_NAME_PATTERNS (case-insensitive substring matching, ordered most-specific first).

This overrides any layer-based classification when a polygon is linked to a location entry.

Fallback: Layer-based classification

Mappedin polygon layers map to amenity categories:

LayerCategory
Washroom / Washroomstoilet
Connection / Connectionsescalator
Entrance / Entrancesexit
Amenities IconsSkipped (no type discriminator — handled by location lookup)

Elevator Data Availability

Only Yorkdale (8 elevators) and Rockingham (2 elevators) have elevator data in their Mappedin source. Australian Vicinity malls (Chadstone, Glen, Emporium, QVB, etc.) do not tag elevators — Vicinity's Mappedin data uses generic "Connection" polygons for all vertical circulation (escalators, elevators, stairs) with no discriminator field on the polygon itself.

The externalId field occasionally contains ELEVATOR-* prefixes (e.g. Chadstone has 1 out of 166 Connection polygons tagged ELEVATOR-11), but this is unreliable.

Decision: No Heuristic Elevator Detection

Aspect-ratio-based heuristics (small + square → elevator, long + thin → escalator) were considered and rejected. The risk of false positives (tagging stairs as elevators) outweighs the benefit. Elevator data must come from the source provider. Malls that need elevators should have them added via the editor UI.