Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
2480733
Return all targets when supplying empty layers list on iOS (#680)
srmncnk Dec 15, 2025
382005e
chore(deps): bump com.android.application from 8.12.0 to 8.13.2 in /m…
dependabot[bot] Dec 30, 2025
62c3237
chore(deps): bump org.maplibre.gl:android-sdk from 11.13.5 to 12.3.0 …
dependabot[bot] Dec 30, 2025
ea2af4c
chore(deps): bump actions/upload-artifact from 4 to 6 (#688)
dependabot[bot] Dec 30, 2025
fcdd8be
chore(deps): bump com.android.tools.build:gradle from 8.13.0 to 8.13.…
dependabot[bot] Dec 30, 2025
a347dfe
chore(deps): bump actions/checkout from 5 to 6 (#672)
dependabot[bot] Dec 30, 2025
ce098b6
chore(deps): bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2 in…
dependabot[bot] Dec 30, 2025
9cf1b63
chore(deps): bump org.jetbrains.kotlin:kotlin-gradle-plugin from 2.1.…
dependabot[bot] Dec 30, 2025
556eb9e
chore(deps): bump org.jetbrains.kotlin.android from 2.1.0 to 2.2.21 i…
dependabot[bot] Dec 30, 2025
e19216d
Implemented explicit annotation manager initialization (#668)
albertmoravec Dec 30, 2025
761102c
chore(deps): bump actions/checkout from 5 to 6 (#693)
dependabot[bot] Jan 5, 2026
3ffc35b
chore(deps): bump actions/upload-artifact from 4 to 6 (#694)
dependabot[bot] Jan 5, 2026
5230fab
fix: mix max zoom preference on iOS
gabbopalma Jan 5, 2026
8bcd74a
refactor: cameraTargetBounds on android and iOS
gabbopalma Jan 5, 2026
b4e3d65
chore(deps): bump com.android.tools.build:gradle from 8.13.0 to 8.13.…
dependabot[bot] Jan 5, 2026
ee60566
chore(deps): bump com.android.application from 8.12.0 to 8.13.2 in /m…
dependabot[bot] Jan 5, 2026
33bbb97
chore(deps): bump org.jetbrains.kotlin:kotlin-gradle-plugin from 2.1.…
dependabot[bot] Jan 5, 2026
5461e29
chore(deps): bump org.jetbrains.kotlin.android from 2.1.0 to 2.3.0 in…
dependabot[bot] Jan 5, 2026
86907a3
chore(deps): bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2 in…
dependabot[bot] Jan 5, 2026
b4fb174
feat: add logo customization options including visibility and positio…
gabbopalma Jan 6, 2026
ac877a4
refactor: Refactor all example app and pages. Implemented new UI and …
gabbopalma Jan 6, 2026
12dfad2
fix: update setPaintProperty and setLayoutProperty to handle nullable…
gabbopalma Jan 6, 2026
2b550ed
refactor: Improved layers examples. Improved MapLibreMapController di…
gabbopalma Jan 6, 2026
9ce52a6
refactor: Fixed setLayerProperties and pattern images on web and andr…
gabbopalma Jan 6, 2026
8fe2078
chore: changed cat icon to marker icon for pattern examples
gabbopalma Jan 6, 2026
7ee3a08
chore: update changelogs, release, contributing .md and minor fix for…
gabbopalma Jan 6, 2026
2b3b21a
chore: updated pubspec versions to `1.0.0`
gabbopalma Jan 6, 2026
acb6ef6
Merge branch 'main' into release-0.25.0
gabbopalma Jan 6, 2026
07ecf40
chore: rollback to 0.25.0 release version
gabbopalma Jan 7, 2026
97fabb1
chore: rollback to 0.25.0
gabbopalma Jan 7, 2026
f989797
chore: remove disposing of mapController in examples. Minor fixes.
gabbopalma Jan 7, 2026
98660dc
feat: enhance iOS LayerPropertyConverter to handle null values and im…
gabbopalma Jan 7, 2026
910a10a
chore: updated changelogs and fixed pipelines failing
gabbopalma Jan 7, 2026
c001d13
feat: implement camera bounds constraints in example and enhanced cam…
gabbopalma Jan 7, 2026
2a4433e
chore: camera bounds example
gabbopalma Jan 7, 2026
d2ed46c
feat: add attribution parsing for iOS. Enhanced various sources example.
gabbopalma Jan 7, 2026
6d753c4
chore: updated changelog
gabbopalma Jan 7, 2026
89dc6e6
fix: update attribution text for various layers to include copyright …
gabbopalma Jan 7, 2026
c78a5be
fix: update attribution text in various layers to use copyright symbol
gabbopalma Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: 'Dependency Review'
uses: actions/dependency-review-action@v4
10 changes: 5 additions & 5 deletions .github/workflows/flutter_beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
java-version: '17'
Expand All @@ -29,7 +29,7 @@ jobs:
- name: Build example APK
run: flutter build apk
- name: Upload apk as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: maplibre-flutter-demo.apk
path: maplibre_gl_example/build/app/outputs/flutter-apk/app-release.apk
Expand All @@ -41,7 +41,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
Expand All @@ -53,7 +53,7 @@ jobs:
- name: Build iOS package
run: flutter build ios --simulator
- name: Upload Runner.app as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: maplibre-flutter-demo.app
path: maplibre_gl_example/build/ios/iphonesimulator
Expand All @@ -65,7 +65,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/flutter_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
name: "Check formatting"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -27,7 +27,7 @@ jobs:
name: "Static code analysis"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -42,7 +42,7 @@ jobs:
name: "Run tests"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -56,7 +56,7 @@ jobs:
name: "Run web tests"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -70,7 +70,7 @@ jobs:
name: "Generate code from templates"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -90,7 +90,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -106,7 +106,7 @@ jobs:
- name: Build example APK
run: flutter build apk
- name: Upload apk as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: maplibre-flutter-demo.apk
path: maplibre_gl_example/build/app/outputs/flutter-apk/app-release.apk
Expand All @@ -118,7 +118,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand All @@ -132,7 +132,7 @@ jobs:
- name: Build iOS package
run: flutter build ios --simulator
- name: Upload Runner.app as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: maplibre-flutter-demo.app
path: maplibre_gl_example/build/ios/iphonesimulator
Expand All @@ -144,7 +144,7 @@ jobs:
run:
working-directory: maplibre_gl_example
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository_owner == 'maplibre'
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: dart-lang/setup-dart@v1
# --force skips the y/N confirmation
# --skip-validation because of "Because maplibre_gl requires the Flutter SDK, version solving failed. Flutter users should use `flutter pub` instead of `dart pub`."
Expand Down
55 changes: 55 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,61 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [0.25.0](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.1...v0.25.0) - 2026-01-07

### Added
* Logo customization options including visibility and position settings (#b4fb174).
* Explicit annotation manager initialization with clear error handling (#668).
* Web: Implemented `getStyle()` to return map style as JSON string.
* Web: Implemented `getSourceIds()` to return list of source IDs.
* Web: Improved `getLayers()` with safe null handling.

### Changed
* **BREAKING**: Web implementation migrated from deprecated `dart:js_util` to modern `dart:js_interop` API (#687).
- **WASM compatible**: Now supports Flutter's upcoming WASM compilation target
- Required for Flutter 3.38.4+ compatibility
- All JS interop classes updated to `@staticInterop` pattern with extension methods
- Improved type safety for JS ↔ Dart conversions
- No public API changes for users
* MapLibre Android SDK upgraded from `11.13.5` to `12.3.0` (#690).
- Includes synchronous GeoJSON source updates
- Support for MLT-format vector tile sources
- Better frustum offset support
- See [MapLibre Native Android 12.3.0 release notes](https://github.com/maplibre/maplibre-native/releases/tag/android-v12.3.0)
* OkHttp updated from `4.12.0` to `5.3.2` for Node.js 24 compatibility (#676, #700).
* Kotlin updated to `2.3.0` (#697, #698).
* Android Gradle Plugin updated to `8.13.2` (#695, #674).
* Android Application Plugin updated to `8.13.2` (#696, #689).
* GitHub Actions: `actions/checkout` updated from v5 to v6 (#672, #693).
* GitHub Actions: `actions/upload-artifact` updated from v4 to v6 (#688, #694).

### Fixed
* Min/max zoom preference on iOS (#5230fab).
* `queryRenderedFeatures` now returns all targets when supplying empty layers list on iOS, aligning behavior with Android (#680).
* iOS: Enhanced LayerPropertyConverter to handle null values and improve expression parsing (#98660dc).
- Better handling of null values in layer properties
- Improved expression parsing for complex layer configurations
* Web: Fixed `setPaintProperty` and `setLayoutProperty` to handle nullable `JSAny` values correctly (#12dfad2).
* Web: Improved `jsify` function to create JS arrays correctly (#2b550ed).
* Fixed `lineDasharray` and patterns reset to null in layer properties (#2b550ed).
* Improved MapLibreMapController disposing to prevent memory leaks (#2b550ed).
* Removed unnecessary disposing of mapController in example app (#f989797).
- Cleaned up example code with minor fixes
- Improved example app stability
* Fixed `setLayerProperties` and pattern images on web and Android (#9ce52a6).
- Pattern images now correctly converted to RGBA format on web
- Fixed mismatched image size error when loading pattern images

### Refactor
* Complete refactor of example app with new UI and improved user experience (#ac877a4).
- Improved map sizing with responsive layouts (50-60% of screen height)
- Better button and control layouts across different screen sizes
- Enhanced visual design and usability
* Refactored `cameraTargetBounds` implementation on Android and iOS for consistent behavior (#8bcd74a).
* Refactored image upload on web - all images now converted to RGBA format for consistency (#9ce52a6).

**Full Changelog**: [v0.24.1...v0.25.0](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.1...v0.25.0)

## [0.24.1](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.0...v0.24.1)

### Fixed
Expand Down
8 changes: 5 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,14 @@ Found a vulnerability or sensitive exposure vector?
## Release process (Maintainers)
A high-level outline (subject to change):
1. Ensure `main` (or release branch) is green (CI, tests, analyzer).
2. Update package versions & root/individual `CHANGELOG.md` sections.
3. Tag the release (`vX.Y.Z`) and publish packages to pub.dev in dependency order.
2. Update package versions & root/individual `CHANGELOG.md` sections following the pre-1.0 versioning policy in [RELEASE.md](RELEASE.md):
- **MINOR** version for breaking changes, significant features, or new functionality
- **PATCH** version for backward-compatible bug fixes
3. Tag the release (`v0.X.Y`) and publish packages to pub.dev in dependency order.
4. Merge back any release branch into `main`.
5. Announce in discussions (optional).

For more information, see [RELEASE](RELEASE.md) instructions.
For more information, see [RELEASE.md](RELEASE.md) instructions.

## Community epectations
Be respectful and constructive. We follow the project's `CODE_OF_CONDUCT.md`. Harassment, discrimination, or unprofessional behavior is not tolerated.
Expand Down
33 changes: 23 additions & 10 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ Edit `pubspec.yaml` in each package:
Ensure internal dependencies point to the new version (same number across all three). Example snippet:
```yaml
dependencies:
maplibre_gl_platform_interface: ^0.23.0
maplibre_gl_platform_interface: ^0.25.0
```

## Update the Changelog
In root `CHANGELOG.md`:
1. Move items from `Unreleased` (if present) under a new heading: `## 0.23.0 - YYYY-MM-DD`.
1. Move items from `Unreleased` (if present) under a new heading: `## 0.25.0 - YYYY-MM-DD`.
2. Group by sections (Suggested):
- Added
- Changed
Expand Down Expand Up @@ -116,8 +116,8 @@ After the release PR has been merged, create & push the version tag (format `vX.
```bash
git checkout main
git pull origin main
git tag v0.23.0
git push origin v0.23.0
git tag v0.24.0
git push origin v0.24.0
```
No further manual publish commands are required unless the pipeline fails. In that case, resolve the issue and re-push (delete & recreate tag only if absolutely necessary and before broad adoption).

Expand All @@ -140,15 +140,28 @@ If a critical issue is discovered shortly after release:
- If native SDK version bumps are included, link upstream release notes in the PR description.
- Run `flutter clean` in example only if weird build artifacts appear (avoid unnecessary noise in instructions).

## Example Flow (Patch Fix)
```
## Example Flows

### Patch Fix (Bug Fix)
```bash
# After merging a simple fix
# decide version 0.23.1
edit pubspecs -> 0.23.1
# decide version 0.25.1 (was 0.25.0)
edit pubspecs -> 0.25.1
update CHANGELOG
commit & PR -> chore: release 0.25.1
merge
git tag v0.25.1 && git push origin v0.25.1
```

### Minor Release (New Feature)
```bash
# After merging a new feature
# decide version 0.25.0 (was 0.24.1)
edit pubspecs -> 0.25.0
update CHANGELOG
commit & PR -> chore: release 0.23.1
commit & PR -> chore: release 0.25.0
merge
git tag v0.23.1 && push tag
git tag v0.25.0 && git push origin v0.25.0
```

---
Expand Down
37 changes: 37 additions & 0 deletions maplibre_gl/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
## [0.25.0](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.1...v0.25.0) - 2026-01-07

### Added
* Logo customization options including visibility and position settings (#b4fb174).
* Explicit annotation manager initialization with clear error handling (#668).
* iOS: Attribution support for tile and raster sources with HTML link parsing.

### Changed
* MapLibre Android SDK upgraded from `11.13.5` to `12.3.0` (#690).
- Includes synchronous GeoJSON source updates
- Support for MLT-format vector tile sources
- Better frustum offset support
- See [MapLibre Native Android 12.3.0 release notes](https://github.com/maplibre/maplibre-native/releases/tag/android-v12.3.0)
* OkHttp updated from `4.12.0` to `5.3.2` for Node.js 24 compatibility (#676, #700).
* Kotlin updated to `2.3.0` (#697, #698).
* Android Gradle Plugin updated to `8.13.2` (#695, #674).
* Android Application Plugin updated to `8.13.2` (#696, #689).
* GitHub Actions: `actions/checkout` updated from v5 to v6 (#672, #693).
* GitHub Actions: `actions/upload-artifact` updated from v4 to v6 (#688, #694).

### Fixed
* Min/max zoom preference on iOS (#5230fab).
* `queryRenderedFeatures` now returns all targets when supplying empty layers list on iOS, aligning behavior with Android (#680).
* iOS: Enhanced LayerPropertyConverter to handle null values and improve expression parsing (#98660dc).
* Fixed `lineDasharray` and patterns reset to null in layer properties (#2b550ed).
* Improved MapLibreMapController disposing to prevent memory leaks.
* Removed unnecessary disposing of mapController in example app (#f989797).
* Fixed `setLayerProperties` and pattern images on web and Android (#9ce52a6).
- Pattern images now correctly converted to RGBA format on web
- Fixed mismatched image size error when loading pattern images

### Refactor
* Complete refactor of example app with new UI and improved user experience (#ac877a4).
* Refactored `cameraTargetBounds` implementation on Android and iOS for consistent behavior (#8bcd74a).

**Full Changelog**: [v0.24.1...v0.25.0](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.1...v0.25.0)

## [0.24.1](https://github.com/maplibre/flutter-maplibre-gl/compare/v0.24.0...v0.24.1)

### Fixed
Expand Down
8 changes: 4 additions & 4 deletions maplibre_gl/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ group 'org.maplibre.maplibregl'
version '1.0-SNAPSHOT'

buildscript {
ext.kotlin_version = '2.1.0'
ext.kotlin_version = '2.3.0'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:8.13.0'
classpath 'com.android.tools.build:gradle:8.13.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Expand Down Expand Up @@ -50,10 +50,10 @@ android {
jvmTarget = JavaVersion.VERSION_21.toString()
}
dependencies {
implementation 'org.maplibre.gl:android-sdk:11.13.5'
implementation 'org.maplibre.gl:android-sdk:12.3.1'
implementation 'org.maplibre.gl:android-plugin-annotation-v9:3.0.2'
implementation 'org.maplibre.gl:android-plugin-offline-v9:3.0.2'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'com.squareup.okhttp3:okhttp:5.3.2'
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,14 @@ static void interpretMapLibreMapOptions(Object o, MapLibreMapOptionsSink sink, C
if (myLocationRenderMode != null) {
sink.setMyLocationRenderMode(toInt(myLocationRenderMode));
}
final Object logoEnabled = data.get("logoEnabled");
if (logoEnabled != null) {
sink.setLogoEnabled(toBoolean(logoEnabled));
}
final Object logoViewGravity = data.get("logoViewPosition");
if (logoViewGravity != null) {
sink.setLogoViewGravity(toInt(logoViewGravity));
}
final Object logoViewMargins = data.get("logoViewMargins");
if (logoViewMargins != null) {
final List logoViewMarginsData = toList(logoViewMargins);
Expand Down
Loading