Files
letro-android/docs/maps.md
Marco Romano 71676c3faf Static images improvements (#933)
1. On devices less than xhdpi request a 1x image from MapTiler (such devices are generally old, slower and with little memory so avoiding to get the 2x image only to have to shrink it later could help).
2. Coerce too big width/height combos within the API limits keeping the aspect ratio (this will allow requests on big horizontal displays to succeed).
3. Don't crash when given weird width/height combos (i.e. zero or negative).
4. Introduce interfaces to hide this whole logic and make it easier for forks to implement their own.

Related to:
- https://github.com/vector-im/element-meta/issues/1678
2023-07-21 13:37:08 +00:00

1.7 KiB

Use of maps

Overview

Element Android uses MapTiler to provide map imagery where required. MapTiler requires an API key, which we bake in to the app at release time.

Local development with MapTiler

If you're developing the application and want maps to render properly you can sign up for the MapTiler free tier.

Place your API key in local.properties with the key services.maptiler.apikey, e.g.:

services.maptiler.apikey=abCd3fGhijK1mN0pQr5t

Optionally you can also place your custom MapTyler style ids for light and dark maps in the local.properties with the keys services.maptiler.lightMapId and services.maptiler.darkMapId. If you don't specify these, the default MapTiler "basic-v2" styles will be used.

Making releasable builds with MapTiler

To insert the MapTiler API key when building an APK, set the ELEMENT_ANDROID_MAPTILER_API_KEY environment variable in your build environment. If you've added custom styles also set the ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID and ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID environment variables accordingly.

Using other map sources or MapTiler styles

If you wish to use an alternative map provider, you can provide your own implementations of TileServerStyleUriBuilder and StaticMapUrlBuilder in features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/.