MyRadar Android SDK
Put MyRadar's live weather map in your Android app: animated radar, alerts, lightning, hurricanes and wind in one Compose map or Android view.
Oct 13, 2026 · Kotlin
Put MyRadar's live weather map in your Android app. One composable (or one view), a few parameters, and you have animated radar, severe weather alerts, lightning, hurricanes and wind on top of a fast vector base map, with room to draw your own data on top.

What you get#
| Feature | What it does |
|---|---|
| Animated radar | The same morphing radar as the MyRadar app: a 100-minute loop that interpolates between scans with motion vectors, so storms glide instead of stepping. Prefer a classic loop? Switch to stepping frames. HD and SD products are also available. |
| Watches and warnings | National Weather Service alert polygons, color-coded by type, refreshed every 20 seconds. |
| Lightning | Strike markers synchronized to the radar timeline, plus an optional full-map flash effect. |
| Hurricanes | Storm center, past and forecast track, intensity markers and the forecast cone for every active tropical cyclone. |
| Wind | Animated surface wind particles. |
| Six base maps | Gray (built for weather contrast), Roads, Aerial, Topographic, Dark and Light. |
| Your own data | Polylines, polygons and markers with rotation and tap callbacks, drawn above the weather layers. |
| Flights | Show a flight by its number: the SDK looks it up, draws its route, track, airports and aircraft, and keeps it updated until it lands. |
| Playback control | Play, pause, scrub the timeline, set the loop length and speed, read frame timestamps, and get palette data for a legend. |
| Readable text | Map labels follow the system font size, or a size you choose. |
| Layer opacity | Radar, warnings, hurricanes and wind each take an opacity from 0 to 1, so weather can sit lightly over your own data or stand out on its own. |
Radar that morphs#

Hurricanes, wind and warnings together#

Pick a base map#

Dial in each layer#

Thirty seconds of code#
// Once, at launch (for example in Application.onCreate).
MyRadarSdk.configure(apiKey = "<your key>")
// Anywhere in Compose.
MyRadarMap(
modifier = Modifier.fillMaxSize(),
initialCamera = MapCamera(LatLng(35.2, -97.4), zoom = 6f),
overlays = setOf(Overlay.Warnings, Overlay.Lightning, Overlay.Hurricanes),
radarOpacity = 0.5f,
overlayOpacities = mapOf(Overlay.Warnings to 0.8f),
)The radar layer is on and playing by default. Rendering starts when the map is
on screen and its activity is started, and stops when it leaves the screen or
the app goes to the background. Apps that use views instead of Compose use
MyRadarMapView, a plain Android view with the same capabilities that can also
be declared in XML.
val mapView = MyRadarMapView(context)
mapView.setCenter(LatLng(35.2, -97.4), zoomLevel = 6f, animated = false)
mapView.setOverlay(Overlay.Warnings, enabled = true)
container.addView(mapView)Control the animation#
The loop plays 100 minutes of radar, morphing between scans, at a pace tuned for a quick look. Three parameters change that:
MyRadarMap(
radarLoopLengthMinutes = 60, // 5 to 120 minutes, one frame every 5 minutes
radarSpeed = 0.5f, // half speed; 2 is double, from 0.1 to 4
radarTransition = RadarTransition.Step, // switch frames outright instead of morphing
)Each radar product keeps its own loop length. The HD and SD products default to 60 minutes, and
SD radar always steps. With views, the same settings are mapView.radar.loopLengthMinutes,
mapView.radar.speed and mapView.radar.transition.
Text size#
Map text follows the system font size by default. That covers place and road labels, hurricane labels, flight labels and your text markers. It grows up to 1.6× at the largest sizes, then stops so the map stays readable. Larger labels need more room, so fewer of them fit at a given zoom.
MyRadarMap(textScale = 1.3f) // a fixed size you choose, from 0.5 to 3; 1 is the default sizePass null (the default) to follow the system setting. With views, set mapView.textScale.
How it fits together#
Your app ──▶ MyRadar Android SDK (Kotlin API and OpenGL ES 3 rendering engine)
│
▼
MyRadar API gateway (radar tiles, alerts, lightning, cyclones, wind)The SDK, with its OpenGL ES rendering engine built in, ships as one Android library in the
MyRadar SDK Maven repository, https://myradar.github.io/MyRadar-Android-SDK-Maven. It's pure
Kotlin, with no native code. Your app depends on com.acmeaom.myradar:myradar-sdk:
// settings.gradle.kts, inside dependencyResolutionManagement { repositories { … } }
maven { url = uri("https://myradar.github.io/MyRadar-Android-SDK-Maven") }
// app/build.gradle.kts
implementation("com.acmeaom.myradar:myradar-sdk:2.0.1")All weather data comes from MyRadar's gateway over HTTPS and is authenticated with your API key. Base map tiles come from MyRadar's map servers. The SDK contacts no other host.
Requirements#
| Minimum | |
|---|---|
| MyRadar API key | Required. Pass it to MyRadarSdk.configure(apiKey) once at launch; every request to the MyRadar API gateway is authenticated with it. Without it the map makes no requests and shows a "not configured" notice. Get one from the developer portal. |
| Android | 8 (API 26), with OpenGL ES 3 |
| UI toolkit | Jetpack Compose (MyRadarMap) or Android views (MyRadarMapView) |
| Devices | Any phone or tablet with Android 8 and OpenGL ES 3; the SDK has no native code, so every ABI works. Give emulators 4 CPU cores (emulator -avd <name> -cores 4): on one core the map loads slowly. |
| Permissions | INTERNET only, merged in automatically. The SDK does not use location services. |
| Network | HTTPS only; no cleartext traffic. |
| R8 / ProGuard | No rules needed; nothing to add when you minify. |
| Install size | About 1.3 MB of code and assets before R8 shrinks the code; under 1 MB of Play Store download. |
Good to know#
- Smooth morphing needs a regional view. Motion-vector morphing is active at roughly zoom 4 and closer. Whole-continent views cross-fade between frames instead. Whole-number zoom levels are the safe choice when you position the camera in code.
- Attribution is required. Show the entries from
MyRadarMapView.licensesAndAttributions(context)on an about or legal screen. - US coverage first. Alerts are National Weather Service products; radar coverage follows the NEXRAD network with a global estimate blended in offshore.
Next#
Build a flight tracker with the SDK: a one-screen app that follows a flight by its number over the weather, built entirely with the public API. Its complete source is in the MyRadar SDK samples repository on GitHub. To run it you need Android Studio, an Android 8+ emulator or device and your API key; the walkthrough's Run the demo section shows exactly where the key goes.