Skip to content

Repository files navigation

MapLibre Logo

Flutter MapLibre GL

Interactive, fully styleable vector maps on Android, iOS and Web, powered by open source MapLibre.
Vendor-neutral: host your own tiles or mix providers, no account or API key required to get started.

Pub Version Likes Pub Points Stars Melos

✨ Try it before you install: run the package live in your browser and read the full docs, no setup and no API keys.

Live demo    Documentation

🖼️ What it looks like

3D buildings Clustering Globe, on web
Midtown Manhattan with the camera pitched and rotated GeoJSON points clustered with live counts globe projection rendered by MapLibre GL JS
Data-driven styling Heatmaps Annotations
countries coloured and faded by their own properties point density drawn on the GPU symbol markers with custom icons and labels

All of these are live in the demo, and every guide embeds an interactive map you can pan and click.

🚀 Quick start

flutter pub add maplibre_gl
import 'package:maplibre_gl/maplibre_gl.dart';

// Anywhere with bounded constraints, a Scaffold body for example:
MapLibreMap(
  initialCameraPosition: const CameraPosition(target: LatLng(0, 0), zoom: 2),
  styleString: 'https://demotiles.maplibre.org/style.json',
  onStyleLoadedCallback: () {
    // Add sources, layers and images here.
  },
);

Requires Flutter 3.29+ · Dart 3.7+ · Android 5.0 (API 21)+ · iOS 13+ · a browser with WebGL2 (Safari 15+).

Then head to the getting started guide for platform setup (location permissions on iOS/Android; web needs no index.html changes) and to learn how to add markers, layers, offline tiles and more.

Upgrading from an earlier release? See the migration guide.

🗺️ Feature support

Engines: maplibre-native (Android/iOS), maplibre-gl-js (Web). Only a subset of native SDK APIs is exposed, PRs to extend coverage are welcome.

Feature Android iOS Web
Style, Camera, Gesture
User Location
Annotations
All layer types (Symbol to Hillshade)
GeoJSON, vector, raster & PMTiles sources
Offline regions
Feature state

See the full feature matrix for details.

Not supported: desktop targets (Windows, macOS, Linux), and Flutter widgets inside the map. The map is a platform view rendered by the native engines, so your widgets go over it in a Stack, not between its layers.

🔗 Links

Example app · API reference · Changelog · Discussions · Issues · Slack (#maplibre-flutter)

🤝 Contributing

dart pub global activate melos
melos bootstrap

This is a melos workspace (maplibre_gl, maplibre_gl_web, maplibre_gl_platform_interface and the example app). Layer/source helpers are generated, don't edit them directly; run melos run generate && melos run format-all. See CONTRIBUTING.md before opening a PR, and the architecture docs for an overview.

This project is a fork of flutter-mapbox-gl. ❤️

💝 Contributors

A huge thanks to everyone who has contributed to this project!

Contributors

Made with contrib.rocks.

📄 License

See LICENSE.

About

Flutter plugin for MapLibre: vendor‑neutral vector & raster maps on Android, iOS and Web, with custom styles, offline regions, GeoJSON layers and PMTiles (fork of flutter-mapbox-gl)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

357 stars

Watchers

10 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages