# Geocoding Overview

Geocoding is the process of turning coordinates into a Place (reverse), or turning an address name into coordinates.

Compass offers the following features:

* Reverse: Turn coordinates (latitude, longitude) into a Place object.
* Forward: Turn an address search query into coordinates.
* Android and iOS support, using built-in services.
* Support for web based API services.
  * Currently support for [Google Maps ](https://developers.google.com/maps/documentation/geocoding)and [Mapbox](https://docs.mapbox.com/#search) is included.
  * Easily create a wrapper for your own API.

{% hint style="info" %}
Built-in services are used for Android and iOS. That means that there is restrictions to its usage. You can be throttled or blocked from using the geocoding services if you make too many requests in a short period of time.
{% endhint %}

### Quick start

```kotlin
fun getPlaceFromCoordinates(lat: Long, lng: Long): Place? {
    val geocoder = Geocoder()
    return geocoder.placeOrNull()
}
```

In this quick example the `Geocoder()` function is a convenience function for creating a `Geocoder` object. Each of the `geocoder-*` artifacts provide one.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://compass.jordond.dev/geocoding/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
