Skip to content

Commit b436a74

Browse files
author
Erwan Jestin
committed
Merge remote-tracking branch 'upstream/main' into no-web-upstream
# Conflicts: # maplibre_gl_web/lib/maplibre_gl_web.dart # maplibre_gl_web/lib/src/maplibre_web_gl_platform.dart # maplibre_gl_web/lib/src/ui/map.dart
2 parents d4c031c + 3e09a3e commit b436a74

File tree

18 files changed

+657
-323
lines changed

18 files changed

+657
-323
lines changed

.github/workflows/flutter_ci.yml

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
- uses: actions/checkout@v4
1616
- uses: subosito/flutter-action@v2
1717
with:
18+
channel: stable
1819
cache: true
1920
- uses: bluefireteam/melos-action@v3
2021
- name: Lint analysis
@@ -27,6 +28,7 @@ jobs:
2728
- uses: actions/checkout@v4
2829
- uses: subosito/flutter-action@v2
2930
with:
31+
channel: stable
3032
cache: true
3133
- uses: bluefireteam/melos-action@v3
3234
- name: Lint analysis
@@ -39,6 +41,7 @@ jobs:
3941
- uses: actions/checkout@v4
4042
- uses: subosito/flutter-action@v2
4143
with:
44+
channel: stable
4245
cache: true
4346
- uses: bluefireteam/melos-action@v3
4447
- run: melos test:io
@@ -50,37 +53,48 @@ jobs:
5053
- uses: actions/checkout@v4
5154
- uses: subosito/flutter-action@v2
5255
with:
56+
channel: stable
5357
cache: true
5458
- uses: bluefireteam/melos-action@v3
5559
- run: melos test:web
5660

61+
code-gen:
62+
name: "Generate code from templates"
63+
runs-on: ubuntu-latest
64+
steps:
65+
- uses: actions/checkout@v4
66+
- uses: subosito/flutter-action@v2
67+
with:
68+
channel: stable
69+
cache: true
70+
- uses: bluefireteam/melos-action@v3
71+
- run: melos generate
72+
- run: melos format
73+
- name: Check Git changes
74+
uses: multani/git-changes-action@v1
75+
5776
build-android:
5877
name: "Build Android apk"
5978
runs-on: ubuntu-latest
6079
defaults:
6180
run:
6281
working-directory: maplibre_gl_example
63-
strategy:
64-
fail-fast: false
65-
matrix:
66-
sdk: [ '3.22.0', '' ]
6782
steps:
6883
- uses: actions/checkout@v4
6984
- uses: subosito/flutter-action@v2
7085
with:
71-
flutter-version: ${{ matrix.sdk }}
86+
channel: stable
7287
cache: true
7388
- uses: bluefireteam/melos-action@v3
7489
- uses: actions/setup-java@v4
7590
with:
76-
java-version: '17'
91+
java-version: '21'
7792
distribution: 'temurin'
7893
cache: 'gradle'
7994
- name: Build example APK
8095
run: flutter build apk
8196
- name: Upload apk as artifact
8297
uses: actions/upload-artifact@v4
83-
if: ${{ matrix.sdk == '' }}
8498
with:
8599
name: maplibre-flutter-demo.apk
86100
path: maplibre_gl_example/build/app/outputs/flutter-apk/app-release.apk
@@ -91,15 +105,11 @@ jobs:
91105
defaults:
92106
run:
93107
working-directory: maplibre_gl_example
94-
strategy:
95-
fail-fast: false
96-
matrix:
97-
sdk: [ '3.22.0', '' ]
98108
steps:
99109
- uses: actions/checkout@v4
100110
- uses: subosito/flutter-action@v2
101111
with:
102-
flutter-version: ${{ matrix.sdk }}
112+
channel: stable
103113
cache: true
104114
- uses: bluefireteam/melos-action@v3
105115
- uses: maxim-lobanov/setup-cocoapods@v1
@@ -108,7 +118,6 @@ jobs:
108118
- name: Build iOS package
109119
run: flutter build ios --simulator
110120
- name: Upload Runner.app as artifact
111-
if: ${{ matrix.sdk == '' }}
112121
uses: actions/upload-artifact@v4
113122
with:
114123
name: maplibre-flutter-demo.app
@@ -120,15 +129,11 @@ jobs:
120129
defaults:
121130
run:
122131
working-directory: maplibre_gl_example
123-
strategy:
124-
fail-fast: false
125-
matrix:
126-
sdk: [ '3.22.0', '' ]
127132
steps:
128133
- uses: actions/checkout@v4
129134
- uses: subosito/flutter-action@v2
130135
with:
131-
flutter-version: ${{ matrix.sdk }}
136+
channel: stable
132137
cache: true
133138
- uses: bluefireteam/melos-action@v3
134139
- name: Build web

maplibre_gl/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
### Breaking changes
44

5-
* Updated maplibre-native for iOS to v6.12.0. This mainly introduces PMTiles support. See the
5+
* Updated maplibre-native for iOS to v6.14.0. This mainly introduces PMTiles support. See the
66
[maplibre-native changelog](https://github.com/maplibre/maplibre-native/blob/main/platform/ios/CHANGELOG.md#6121)
77
for more information.
8-
* Updated maplibre-native for Android to v11.8.1. This mainly introduces PMTiles support.
8+
* Updated maplibre-native for Android to v11.9.0. This mainly introduces PMTiles support.
99
Flutter version packed with OpenGL ES 3.0 build for now, later we could probably switch to Vulkan.
1010
See the [maplibre-native changelog](https://github.com/maplibre/maplibre-native/blob/main/platform/android/CHANGELOG.md#1181)
1111
for more information.
12+
* queryRenderedFeaturesInRect support string feature ids on web (#576).
1213

1314
### Changed
1415

maplibre_gl/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
<p align="center">
2+
<img src="https://github.com/user-attachments/assets/7ff2cda8-f564-4e70-a971-d34152f969f0#gh-light-mode-only" alt="MapLibre Logo" width="200">
3+
<img src="https://github.com/user-attachments/assets/cee8376b-9812-40ff-91c6-2d53f9581b83#gh-dark-mode-only" alt="MapLibre Logo" width="200">
4+
</p>
5+
16
# Flutter MapLibre GL
27

38
[![Pub Version](https://img.shields.io/pub/v/maplibre_gl)](https://pub.dev/packages/maplibre_gl)

maplibre_gl/android/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ android {
2929
namespace 'org.maplibre.maplibregl'
3030
}
3131

32-
ndkVersion "27.0.12077973"
32+
ndkVersion "28.1.13356709"
3333

3434
defaultConfig {
3535
minSdkVersion 21
@@ -48,13 +48,13 @@ android {
4848
jvmTarget = JavaVersion.VERSION_1_8
4949
}
5050
dependencies {
51-
implementation 'org.maplibre.gl:android-sdk:11.8.5'
51+
implementation 'org.maplibre.gl:android-sdk:11.9.0'
5252
implementation 'org.maplibre.gl:android-plugin-annotation-v9:3.0.2'
5353
implementation 'org.maplibre.gl:android-plugin-offline-v9:3.0.2'
5454
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
5555
}
5656
}
5757

5858
dependencies {
59-
implementation 'androidx.core:core-ktx:1.15.0'
59+
implementation 'androidx.core:core-ktx:1.16.0'
6060
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.maplibre.maplibregl
2+
3+
import android.content.Context
4+
import org.maplibre.android.location.LocationComponent
5+
import org.maplibre.android.location.engine.LocationEngine
6+
import org.maplibre.android.location.engine.LocationEngineDefault.getDefaultLocationEngine
7+
import org.maplibre.android.location.engine.LocationEngineProxy
8+
import org.maplibre.android.location.engine.LocationEngineRequest
9+
10+
class LocationEngineFactory {
11+
12+
private var locationEngineRequest: LocationEngineRequest? = null
13+
14+
fun getLocationEngine(context: Context): LocationEngine {
15+
if (locationEngineRequest?.priority == LocationEngineRequest.PRIORITY_HIGH_ACCURACY) {
16+
return LocationEngineProxy(
17+
MapLibreGPSLocationEngine(context)
18+
)
19+
}
20+
return getDefaultLocationEngine(context)
21+
}
22+
23+
fun initLocationComponent(
24+
context: Context,
25+
locationComponent: LocationComponent?,
26+
locationEngineRequest: LocationEngineRequest?
27+
) {
28+
if (locationEngineRequest != null) {
29+
this.locationEngineRequest = locationEngineRequest
30+
}
31+
if (locationComponent != null) {
32+
locationComponent.locationEngine = getLocationEngine(context)
33+
locationEngineRequest?.let { locationEngineRequest ->
34+
locationComponent.locationEngineRequest = locationEngineRequest
35+
}
36+
}
37+
}
38+
}

maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapController.java

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,24 @@
1717
import android.os.Build;
1818
import android.util.DisplayMetrics;
1919
import android.util.Log;
20+
import android.util.Pair;
2021
import android.view.Gravity;
2122
import android.view.MotionEvent;
2223
import android.view.TextureView;
2324
import android.view.View;
2425
import android.widget.FrameLayout;
25-
import android.util.Pair;
2626

2727
import androidx.annotation.NonNull;
2828
import androidx.lifecycle.DefaultLifecycleObserver;
2929
import androidx.lifecycle.Lifecycle;
3030
import androidx.lifecycle.LifecycleOwner;
31+
3132
import com.google.gson.Gson;
3233
import com.google.gson.JsonArray;
3334
import com.google.gson.JsonElement;
3435
import com.google.gson.JsonParser;
3536

36-
import org.maplibre.android.gestures.AndroidGesturesManager;
37-
import org.maplibre.android.gestures.MoveGestureDetector;
38-
import org.maplibre.android.location.engine.LocationEngine;
39-
import org.maplibre.android.location.engine.LocationEngineDefault;
40-
import org.maplibre.android.location.engine.LocationEngineProxy;
41-
import org.maplibre.android.location.engine.LocationEngineRequest;
42-
import org.maplibre.geojson.Feature;
43-
import org.maplibre.geojson.FeatureCollection;
37+
import org.jetbrains.annotations.NotNull;
4438
import org.maplibre.android.camera.CameraPosition;
4539
import org.maplibre.android.camera.CameraUpdate;
4640
import org.maplibre.android.camera.CameraUpdateFactory;
@@ -49,17 +43,20 @@
4943
import org.maplibre.android.geometry.LatLngBounds;
5044
import org.maplibre.android.geometry.LatLngQuad;
5145
import org.maplibre.android.geometry.VisibleRegion;
46+
import org.maplibre.android.gestures.AndroidGesturesManager;
47+
import org.maplibre.android.gestures.MoveGestureDetector;
5248
import org.maplibre.android.location.LocationComponent;
5349
import org.maplibre.android.location.LocationComponentActivationOptions;
5450
import org.maplibre.android.location.LocationComponentOptions;
5551
import org.maplibre.android.location.OnCameraTrackingChangedListener;
5652
import org.maplibre.android.location.engine.LocationEngineCallback;
53+
import org.maplibre.android.location.engine.LocationEngineRequest;
5754
import org.maplibre.android.location.engine.LocationEngineResult;
5855
import org.maplibre.android.location.modes.CameraMode;
5956
import org.maplibre.android.location.modes.RenderMode;
60-
import org.maplibre.android.maps.MapView;
6157
import org.maplibre.android.maps.MapLibreMap;
6258
import org.maplibre.android.maps.MapLibreMapOptions;
59+
import org.maplibre.android.maps.MapView;
6360
import org.maplibre.android.maps.OnMapReadyCallback;
6461
import org.maplibre.android.maps.Style;
6562
import org.maplibre.android.offline.OfflineManager;
@@ -72,20 +69,18 @@
7269
import org.maplibre.android.style.layers.Layer;
7370
import org.maplibre.android.style.layers.LineLayer;
7471
import org.maplibre.android.style.layers.Property;
72+
import org.maplibre.android.style.layers.PropertyFactory;
7573
import org.maplibre.android.style.layers.PropertyValue;
7674
import org.maplibre.android.style.layers.RasterLayer;
7775
import org.maplibre.android.style.layers.SymbolLayer;
78-
import org.maplibre.android.style.layers.PropertyFactory;
7976
import org.maplibre.android.style.sources.CustomGeometrySource;
8077
import org.maplibre.android.style.sources.GeoJsonSource;
8178
import org.maplibre.android.style.sources.ImageSource;
8279
import org.maplibre.android.style.sources.Source;
8380
import org.maplibre.android.style.sources.VectorSource;
81+
import org.maplibre.geojson.Feature;
82+
import org.maplibre.geojson.FeatureCollection;
8483

85-
import io.flutter.plugin.common.BinaryMessenger;
86-
import io.flutter.plugin.common.MethodCall;
87-
import io.flutter.plugin.common.MethodChannel;
88-
import io.flutter.plugin.platform.PlatformView;
8984
import java.io.IOException;
9085
import java.io.InputStream;
9186
import java.util.ArrayList;
@@ -98,6 +93,11 @@
9893
import java.util.Map;
9994
import java.util.Set;
10095

96+
import io.flutter.plugin.common.BinaryMessenger;
97+
import io.flutter.plugin.common.MethodCall;
98+
import io.flutter.plugin.common.MethodChannel;
99+
import io.flutter.plugin.platform.PlatformView;
100+
101101

102102
/** Controller of a single MapLibreMaps MapView instance. */
103103
@SuppressLint("MissingPermission")
@@ -132,6 +132,7 @@ final class MapLibreMapController
132132
private boolean myLocationEnabled = false;
133133
private int myLocationTrackingMode = 0;
134134
private int myLocationRenderMode = 0;
135+
private LocationEngineFactory myLocationEngineFactory = new LocationEngineFactory();
135136
private boolean disposed = false;
136137
private boolean dragEnabled = true;
137138
private MethodChannel.Result mapReadyResult;
@@ -299,6 +300,7 @@ private void enableLocationComponent(@NonNull Style style) {
299300
LocationComponentActivationOptions
300301
.builder(context, style)
301302
.locationComponentOptions(buildLocationComponentOptions(style))
303+
.locationEngine(myLocationEngineFactory.getLocationEngine(context))
302304
.build();
303305

304306
locationComponent.activateLocationComponent(options);
@@ -680,7 +682,6 @@ private Pair<Feature, String> firstFeatureOnLayers(RectF in) {
680682

681683
@Override
682684
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
683-
684685
switch (call.method) {
685686
case "map#waitForMap":
686687
if (mapLibreMap != null) {
@@ -1877,17 +1878,8 @@ public void setCameraTargetBounds(LatLngBounds bounds) {
18771878
}
18781879

18791880
@Override
1880-
public void setLocationEngineProperties(LocationEngineRequest locationEngineRequest){
1881-
if(locationComponent != null){
1882-
if(locationEngineRequest.getPriority() == LocationEngineRequest.PRIORITY_HIGH_ACCURACY){
1883-
locationComponent.setLocationEngine(new LocationEngineProxy(
1884-
new MapLibreGPSLocationEngine(context)));
1885-
} else {
1886-
locationComponent.setLocationEngine(
1887-
LocationEngineDefault.INSTANCE.getDefaultLocationEngine(context));
1888-
}
1889-
locationComponent.setLocationEngineRequest(locationEngineRequest);
1890-
}
1881+
public void setLocationEngineProperties(@NotNull LocationEngineRequest locationEngineRequest) {
1882+
myLocationEngineFactory.initLocationComponent(context, locationComponent, locationEngineRequest);
18911883
}
18921884

18931885
@Override

maplibre_gl/ios/maplibre_gl.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ A new Flutter plugin.
1616
s.dependency 'Flutter'
1717
# When updating the dependency version,
1818
# make sure to also update the version in Package.swift.
19-
s.dependency 'MapLibre', '6.12.1'
19+
s.dependency 'MapLibre', '6.14.0'
2020
s.swift_version = '5.0'
2121
s.ios.deployment_target = '12.0'
2222
end

maplibre_gl/ios/maplibre_gl/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ let package = Package(
1414
dependencies: [
1515
// When updating the dependency version,
1616
// make sure to also update the version in maplibre_gl.podspec.
17-
.package(url: "https://github.com/maplibre/maplibre-gl-native-distribution.git", exact: "6.12.1"),
17+
.package(url: "https://github.com/maplibre/maplibre-gl-native-distribution.git", exact: "6.14.0"),
1818
],
1919
targets: [
2020
.target(

0 commit comments

Comments
 (0)