Releases: mapbox/mapbox-maps-flutter
v2.6.0
Features ✨ and improvements 🏁
- Introduce the experimental Interactions API, a toolset that allows you to handle interactions on both layers and basemap features for styles. This API introduces a new concept called
Featureset
, which allows Evolving Basemap styles, such as Standard, to export an abstract set of features, such as POI, buildings, and place labels, regardless of which layers they are rendered on. AnInteraction
can then be targeted to these features, modifying their state when interacted with. For example, you can add aTapInteraction
to your map which targets thebuildings
Featureset
. When a user taps on a building, the building will be highlighted and its color will change to blue.
var tapInteraction = TapInteraction(StandardBuildings(),
(_, feature) {
mapboxMap.setFeatureStateForFeaturesetFeature(feature, StandardBuildingState(highlight: true));
log("Building group: ${feature.group}");
});
mapboxMap.addInteraction(tapInteraction);
Specific changes:
- Introduce the experimental
MapboxMap.addInteractions
method, which allows you to add interactions to the map. - Introduce
TapInteraction
andLongTapInteraction
, which allow you to add tap and longTap interactions to the map. - Introduce
FeaturesetDescriptor
-- and convenience descriptors forStandardBuildings
,StandardPOIs
, andStandardPlaceLabels
-- which allow you to describe the featureset you wantInteractions
to target. - Introduce low-level methods for creating and manipulating interactive features:
queryRenderedFeatures
,querySourceFeatures
,setFeatureState
,getFeatureState
,removeFeatureState
,resetFeatureState
- For more guidance with using these new features see
interactive_features_example.dart
. - Align tap propagation behavior on Android and iOS.
- Add support for Swift Package Manager.
Bug fixes 🐞
- [Android] Fix bug in .setStyleImportConfigProperties() where map values were not being set correctly.
- [Android] Fix throwing NPE when converting a map with null values to a Value.
- Align tap propagation behavior on Android and iOS.
Dependency Updates
2.5.2
2.6.0-rc.1
Important
The iOS minimum deployment target is now iOS 14.0.
Features ✨ and improvements 🏁
- Introduce the experimental Interactions API, a toolset that allows you to handle interactions on both layers and basemap features for styles. This API introduces a new concept called
Featureset
, which allows Evolving Basemap styles, such as Standard, to export an abstract set of features, such as POI, buildings, and place labels, regardless of which layers they are rendered on. AnInteraction
can then be targeted to these features, modifying their state when interacted with. For example, you can add aTapInteraction
to your map which targets thebuildings
Featureset
. When a user taps on a building, the building will be highlighted and its color will change to blue.
var tapInteraction = TapInteraction(StandardBuildings(),
(_, feature) {
mapboxMap.setFeatureStateForFeaturesetFeature(feature, StandardBuildingState(highlight: true));
log("Building group: ${feature.group}");
});
mapboxMap.addInteraction(tapInteraction);
Specific changes:
- Introduce the experimental
MapboxMap.addInteractions
method, which allows you to add interactions to the map. - Introduce
TapInteraction
andLongTapInteraction
, which allow you to add tap and longTap interactions to the map. - Introduce
FeaturesetDescriptor
-- and convenience descriptors forStandardBuildings
,StandardPOIs
, andStandardPlaceLabels
-- which allow you to describe the featureset you wantInteractions
to target. - Introduce low-level methods for creating and manipulating interactive features:
queryRenderedFeatures
,querySourceFeatures
,setFeatureState
,getFeatureState
,removeFeatureState
,resetFeatureState
- For more guidance with using these new features see
interactive_features_example.dart
. - Align tap propagation behavior on Android and iOS.
Dependency Updates
2.6.0-beta.1
2.5.1
2.5.0
Known issues 🛑
We do not recommend using this version when deploying on Android. We are actively working on a patch release (2.5.1
) to fix the following critical issue:
- When a map is currently visible and user press home button the
MapboxRenderThread
consumes CPU (potentially keeping one CPU busy).
Features ✨ and improvements 🏁
- Added viewport support to
MapWidget
. Control the camera’s initial position and behavior by specifying a ViewportState subclass in the viewport parameter. This allows for centering on specific locations, following the user’s position, or showing an overview of a geometry. If no viewport is provided, the map uses its default camera settings.MapWidget( viewport: CameraViewportState( center: Point(coordinates: Position(-117.918976, 33.812092)), zoom: 15.0, ), );
- Marked
ClipLayer
as stable. - Updated our generated code to align with iOS and Android platforms. Specifically, the changes:
- Updated experimental
symbolElevationReference
property onSymbolLayer
. - Introduced
backgroundPitchAlignment
property onBackgroundLayer
. - Introduced experimental
fillZOffset
property onFillLayer
. - Introduced experimental
fillExtrusionBaseAlignment
andfillExtrusionHeightAlignment
properties onFillExtrusionLayer
. - Marked get and set
ZOffset
methods onPolygonAnnotationManager
,PolylineAnnotationManager
, andPointAnnotationManager
as experimental. - Marked get and set
symbolElevationReference
methods onPointAnnotationManager
as experimental. - Marked get and set line trim methods on
PolylineAnnotationManager
as experimental. - Added a property
emphasisCircleGlowRange
toLocationIndicatorLayer
to control the glow effect of the emphasis circle – from the solid start to the fully transparent end. - Added experimental
ZOffset
properties toPolylineAnnotationMessenger
,PolygonAnnotationMessenger
, andPointAnnotationMessenger
. - Introduced
FillExtrusionBaseAlignment
andFillExtrusionHeightAlignment
, andBackgroundPitchAlignment
enums.
- Updated experimental
Dependency Updates
2.5.0-rc.1
Features ✨ and improvements 🏁
Updated our generated code to align with iOS and Android platforms. Specifically, the changes:
- Update experimental
symbolElevationReference
property onSymbolLayer
. - Introduce
backgroundPitchAlignment
property onBackgroundLayer
. - Introduce experimental
fillZOffset
property onFillLayer
. - Introduce experimental
fillExtrusionBaseAlignment
andfillExtrusionHeightAlignment
properties onFillExtrusionLayer
. - Mark get and set
ZOffset
methods onPolygonAnnotationManager
,PolylineAnnotationManager
, andPointAnnotationManager
as experimental. - Mark get and set
symbolElevationReference
methods onPointAnnotationManager
as experimental. - Mark get and set line trim methods on
PolylineAnnotationManager
as experimental. - Add a property
emphasisCircleGlowRange
toLocationIndicatorLayer
to control the glow effect of the emphasis circle – from the solid start to the fully transparent end. - Add experimental
ZOffset
properties toPolylineAnnotationMessenger
,PolygonAnnotationMessenger
, andPointAnnotationMessenger
. - Introduce
FillExtrusionBaseAlignment
andFillExtrusionHeightAlignment
, andBackgroundPitchAlignment
enums.
Dependency Updates
2.5.0-beta.1
Features ✨ and improvements 🏁
- Added viewport support to
MapWidget
. Control the camera’s initial position and behavior by specifying a ViewportState subclass in the viewport parameter. This allows for centering on specific locations, following the user’s position, or showing an overview of a geometry. If no viewport is provided, the map uses its default camera settings. PR by @evil159
MapWidget(
viewport: CameraViewportState(
center: Point(coordinates: Position(-117.918976, 33.812092)),
zoom: 15.0,
),
);
- Update Turf dependency to
4.0.0-beta.1
Dependency Updates
2.4.1
2.4.0
Important
Configuring Mapbox's secret token is no longer required when installing our SDKs.
Features ✨ and improvements 🏁
-
Updated the minimum required Flutter SDK to version 3.22.3 and Dart to version 3.4.4. With the fix for Virtual Display hosting mode on Android in Flutter 3.22, we’ve changed the default map view hosting mode to Virtual Display composition. This update should eliminate the brief visibility of the map after it has been dismissed. #754
-
Introduce experimental property
MapboxMap.styleGlyphURL
. Use this property to apply custom fonts to the map at runtime, without modifying the base style. #753 -
Expose current map's camera state on
CameraChanged
event. #704
You can now observe the map's camera updates withonCameraChangeListener
onCameraChangeListener(CameraChangedEventData data) { print("CameraChangedEventData: timestamp: ${data.timestamp}, cameraState: ${data.cameraState}"); }
-
Print to console native Maps SDK logs in debug configuration. Logs are proxied only in debug configuration and can be disabled completely by passing environment flag
MAPBOX_LOG_DEBUG
with false value. #710 -
Remove
ProxyBinaryMessenger
, instead setup channel with amessageChannelSuffix
. #715.
Bug fixes 🐞
- Fix rare crash in
Snapshotter
. The crash could happen when creating/destroying multiple instances ofSnapshotter
in succession. #728 - Fix a crash that occurs when the widget state is updated before the platform view is created. #724
- Fix a crash in Snapshotter when GlyphsRasterizationMode is specified in MapSnapshotOptions. #738