Skip to main content

Land Use Layers

The Land Use section of the Planning Data sidebar provides color-coded zoning classification maps for two Florida regions: the Orlando Metro Area and the City of Altamonte Springs.

Enabling Land Use

In the sidebar, expand the Planning Data → Land Use section and click either:

  • Orlando Metro Area — loads the broader Orlando metropolitan region
  • City of Altamonte Springs — loads the municipal boundary of Altamonte Springs

Clicking the active button again hides the layer.

Color Coding

Each land use polygon is filled with a semi-transparent color based on its classification:

CategoryColor
ResidentialBlue
CommercialRed/Orange
IndustrialPurple
Parks / RecreationGreen
WaterCyan
Roads / TransportationGray
Other / UnclassifiedYellow

A color legend appears below the buttons when a layer is active.

Clicking a Polygon

Click any land use polygon on the map to open an info dialog showing:

  • Land use type / classification name
  • Additional GeoJSON properties (parcel data, zoning codes) when available

Click the × button or anywhere outside the dialog to close it.

Height-Based Visibility

Land use polygon heights are adjusted dynamically based on camera altitude using calculateDynamicLandUseHeight(). When zoomed in close, polygons rise slightly off the terrain surface for better visibility; at high altitudes they flatten to minimize visual clutter.

Data Sources

LayerSource
Orlando Metro AreaOrlando Open Data — ArcGIS Hub (GeoJSON, EPSG:4326)
Altamonte SpringsLocal GeoJSON file served from client/public/data/

The Orlando layer is fetched live from the ArcGIS REST API as a GeoJSON download; it requires an active internet connection.

Technical Details

Land use data is loaded into Cesium as GeoJsonDataSource instances:

const dataSource = await Cesium.GeoJsonDataSource.load(url, { stroke, fill, strokeWidth });
viewer.dataSources.add(dataSource);

The orlandoLandUseDataSource and orlandoDriDataSource variables hold the active data sources. Toggling visibility calls dataSource.show = true/false rather than removing and re-adding the source.