Maps for Flutter — MapLibre-compatible Maps API
- maps for flutter

# Flutter maps, the boring infra part sorted.
Use the maplibre_gl Flutter package for true native Android/iOS performance. Pass maps.guru style URL into MapOptions and the package handles tile auth.
Get a free API key Flutter docs

install
flutter pub add maplibre_gl Copy

dart Copy
import &#39;package:flutter/material.dart&#39;;
import &#39;package:maplibre_gl/maplibre_gl.dart&#39;;

const String mapStyle = &#39;https://maps.guru/api/v1/styles/standard/light/style.json?key=YOUR_API_KEY&#39;;

class CityMap extends StatelessWidget {
const CityMap({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
body: MaplibreMap(
options: MapOptions(
center: GeoPoint(latitude: 28.6139, longitude: 77.209),
zoom: 11,
style: mapStyle,
),
onMapCreated: (controller) {
controller.addCircles(
const CircleOptions(
geometry: [
GeoPoint(latitude: 28.6139, longitude: 77.209),
],
circleColor: &#39;#e66200&#39;,
circleRadius: 8,
),
);
},
),
);
}
}

{native render}

native · Flutter

### Native WebGL map, runs on iOS and Android.
The Flutter SDK renders straight to the platform’s OpenGL / Metal context. Web preview is skipped — install the package and run on a simulator to see live tiles.

## Why Flutter teams ship on maps.guru
Free-tier generous enough for real production traffic. 50,000 tile requests/month , no credit card.

True native performance, using platform-specific OpenGL/Metal bindings.
- Pass the maps.guru style URL straight through; maplibre_gl handles tile auth.
- Same API surface across iOS and Android. Write once, deploy everywhere.

## Frequently asked

-
### Does maplibre_gl compile to Web?
Not currently; it targets Android and iOS. For Flutter Web, use flutter_map (Leaflet-based) with raster tiles or a different package.

-
### Where does the API key go?
Inline as a `?key=` query on the style URL. Prefer a build-time constant (env file or --dart-define) so it never ships to source control.

## Mapping terms for Flutter developers, defined
The vocabulary behind vector tiles, styles, and geocoding, in plain language.

### What is Vector tile?
A vector tile is a compressed binary chunk of map geometry (roads, buildings, labels) that the browser styles and renders at runtime, instead of downloading a pre-drawn image. Vector tiles let one dataset power unlimited visual styles and stay sharp at every zoom level.

### What is Basemap?
A basemap is the background map layer (roads, water, landuse, place labels) that your own data is drawn on top of. maps.guru serves basemaps as MapLibre-compatible vector tiles.

### What is Map style?
A map style is a JSON document that tells a renderer which colours, fonts, widths, and zoom rules to apply to each layer of a vector tile. maps.guru styles follow the MapLibre Style Specification, so they work in any MapLibre or Mapbox GL JS compatible renderer.

### What is Geocoding?
Geocoding is the process of converting a text address or place name into latitude and longitude coordinates. Reverse geocoding does the opposite: it converts coordinates into the nearest human-readable address.

### What is PMTiles?
PMTiles is a single-file archive format for map tiles that supports HTTP range requests, so a tile server can read one tile out of a multi-gigabyte archive without unpacking it. maps.guru stores its tile archives as PMTiles on Cloudflare R2.

### What is MapLibre GL JS?
MapLibre GL JS is an open-source WebGL map renderer, forked from Mapbox GL JS v1 after that project moved to a proprietary licence. It is the reference renderer for maps.guru styles and carries no per-render licence fee.

### What is Tile request?
A tile request is one HTTP fetch of a single map tile. A typical desktop map view loads roughly 10 to 20 tiles, and panning or zooming loads more, which is why tile quotas are counted in tens of thousands rather than page views.

### What is Static map?
A static map is a server-rendered PNG or JPEG image of a map at a fixed centre, zoom, and size. Static maps are used where an interactive map cannot run: email, PDF exports, Open Graph share cards, and AI chat replies.

## Sources

- MapLibre Style Specification — MapLibre
- Mapbox Vector Tile specification — Mapbox
- MapLibre GL JS documentation — MapLibre
- OpenStreetMap tile usage policy — OpenStreetMap Foundation

## Maps for other frameworks

- tsx
React Native
Native iOS + Android maps via @maplibre/maplibre-react-native.
See snippet

- ts
Leaflet
Drop-in raster tiles for existing Leaflet apps.
See snippet

- ts
MapLibre GL JS
Pure maplibre-gl with no wrappers or opinions.
See snippet

## Ready to build with
beautiful basemaps?
Join developers worldwide who trust maps.guru for their mapping needs. Start free, no credit card required.
Get started free Get started free
Contact us
Free forever plan
5-minute setup
No credit card