# HoloMap v0.1.0 - Table of Contents

> Declarative MapLibre GL JS map components for the Hologram Elixir framework.

## Pages

- [HoloMap](readme.md)
- [Changelog](changelog.md)

- Guides
  - [Installation](installation.md)
  - [Getting started](getting-started.md)
  - [Architecture](architecture.md)
  - [Events](events.md)
  - [Imperative API](imperative-api.md)
  - [Limitations](limitations.md)

## Modules

- [HoloMap](HoloMap.md): Declarative [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) map
components for the [Hologram](https://hologram.page) Elixir framework.
- [HoloMap.Def](HoloMap.Def.md): Shared plumbing for the definition components nested inside a `HoloMap.Map`.
- [HoloMap.Image](HoloMap.Image.md): Registers an image so layers can name it.

- Map container
  - [HoloMap.Map](HoloMap.Map.md): The map container. Everything else in `HoloMap` goes inside one.

- Sources
  - [HoloMap.Source](HoloMap.Source.md): Namespace for the data sources a map can draw from.
  - [HoloMap.Source.GeoJSON](HoloMap.Source.GeoJSON.md): GeoJSON features, given inline or fetched from a URL.
  - [HoloMap.Source.Image](HoloMap.Source.Image.md): A single image pinned to four geographic corners.
  - [HoloMap.Source.Raster](HoloMap.Source.Raster.md): Raster tiles: aerial imagery, scanned maps, any pre-rendered tile pyramid.
  - [HoloMap.Source.RasterDEM](HoloMap.Source.RasterDEM.md): Elevation tiles, encoded as RGB. The input for terrain and hillshade.
  - [HoloMap.Source.Vector](HoloMap.Source.Vector.md): Vector tiles, from a TileJSON endpoint or an explicit tile URL template.

- Layers
  - [HoloMap.Layer](HoloMap.Layer.md): A MapLibre layer of any type.
  - [HoloMap.Layer.Base](HoloMap.Layer.Base.md): The shared body of every layer component.
  - [HoloMap.Layer.Circle](HoloMap.Layer.Circle.md): Circles, the usual way to draw points.
  - [HoloMap.Layer.Fill](HoloMap.Layer.Fill.md): Filled polygons.
  - [HoloMap.Layer.FillExtrusion](HoloMap.Layer.FillExtrusion.md): Extruded polygons, the standard way to draw 3D buildings.
  - [HoloMap.Layer.Heatmap](HoloMap.Layer.Heatmap.md): Point density rendered as a heat surface.
  - [HoloMap.Layer.Hillshade](HoloMap.Layer.Hillshade.md): Shaded relief, from a `HoloMap.Source.RasterDEM`.
  - [HoloMap.Layer.Line](HoloMap.Layer.Line.md): Stroked lines.
  - [HoloMap.Layer.Raster](HoloMap.Layer.Raster.md): Raster tiles, from a `HoloMap.Source.Raster`.
  - [HoloMap.Layer.Symbol](HoloMap.Layer.Symbol.md): Icons and text labels.

- Overlays
  - [HoloMap.Marker](HoloMap.Marker.md): A pin at a coordinate, rendered as a DOM element above the map.
  - [HoloMap.Popup](HoloMap.Popup.md): A tooltip anchored to a coordinate.

- Controls
  - [HoloMap.Control](HoloMap.Control.md): Namespace for MapLibre's built-in map controls.
  - [HoloMap.Control.Attribution](HoloMap.Control.Attribution.md): Data attribution for the sources on the map.
  - [HoloMap.Control.Fullscreen](HoloMap.Control.Fullscreen.md): A button that expands the map to fill the screen.
  - [HoloMap.Control.Geolocate](HoloMap.Control.Geolocate.md): Locate the user, and optionally follow them.
  - [HoloMap.Control.Globe](HoloMap.Control.Globe.md): A button that switches the map between the flat mercator projection and a globe.
  - [HoloMap.Control.Navigation](HoloMap.Control.Navigation.md): Zoom in/out buttons and a compass.
  - [HoloMap.Control.Scale](HoloMap.Control.Scale.md): A scale bar showing ground distance.
  - [HoloMap.Control.Terrain](HoloMap.Control.Terrain.md): A button that lets the user turn 3D terrain on and off.

- 3D &amp; terrain
  - [HoloMap.Sky](HoloMap.Sky.md): Atmosphere at the horizon, for tilted and 3D maps.
  - [HoloMap.Terrain](HoloMap.Terrain.md): 3D terrain, draped over the map from an elevation source.

- Imperative API
  - [HoloMap.API](HoloMap.API.md): Imperative commands for things that are not state.

- Internals
  - [HoloMap.Event](HoloMap.Event.md): Normalises the event-handler props that components accept.
  - [HoloMap.JSON](HoloMap.JSON.md): A small JSON encoder that runs in the browser.
  - [HoloMap.Runtime](HoloMap.Runtime.md): The Elixir seam onto the browser runtime.
  - [HoloMap.Spec](HoloMap.Spec.md): Turns Elixir-flavoured component props into MapLibre style-specification maps.

