# `Dala.Platform.Location`
[🔗](https://github.com/manhvu/dala/blob/main/lib/dala/platform/location.ex#L1)

Device location (GPS / network).

Requires `:location` permission (request via `Dala.Permissions.request/2`).

Location updates arrive as:

    handle_info({:location, %{lat: lat, lon: lon, accuracy: acc, altitude: alt}}, socket)
    handle_info({:location, :error, reason}, socket)

iOS: `CLLocationManager`. Android: `FusedLocationProviderClient`.

# `accuracy`

```elixir
@type accuracy() :: :high | :balanced | :low
```

# `get_once`

```elixir
@spec get_once(Dala.Socket.t()) :: Dala.Socket.t()
```

Request a single location fix, then stop.

# `start`

```elixir
@spec start(
  Dala.Socket.t(),
  keyword()
) :: Dala.Socket.t()
```

Start continuous location updates.

Options:
  - `accuracy: :high | :balanced | :low` (default `:balanced`)

Call `stop/1` when done to save battery.

# `stop`

```elixir
@spec stop(Dala.Socket.t()) :: Dala.Socket.t()
```

Stop continuous location updates.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
