Full Code of mapbox/mapbox-maps-android for AI

main cb45a7410706 cached
1734 files
20.1 MB
5.4M tokens
182 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (21,578K chars total). Download the full file to get everything.
Repository: mapbox/mapbox-maps-android
Branch: main
Commit: cb45a7410706
Files: 1734
Total size: 20.1 MB

Directory structure:
gitextract_dk98dq8g/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── feature.md
│   │   └── issue_template.md
│   ├── pull_request_template.md
│   ├── stale.yml
│   └── workflows/
│       └── codeql.yml
├── .gitignore
├── CHANGELOG.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOPING.md
├── LICENSE.md
├── Makefile
├── README.md
├── android-auto-app/
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   └── auto/
│           │                       ├── app/
│           │                       │   └── MainActivity.kt
│           │                       ├── car/
│           │                       │   ├── CarAnimationThreadController.kt
│           │                       │   ├── CarCameraController.kt
│           │                       │   ├── CarLocationPuck.kt
│           │                       │   ├── CarMapShowcase.kt
│           │                       │   ├── CarMapWidgets.kt
│           │                       │   ├── MapScreen.kt
│           │                       │   ├── MapSession.kt
│           │                       │   ├── RequestPermissionScreen.kt
│           │                       │   ├── RetryScreen.kt
│           │                       │   └── SearchScreen.kt
│           │                       ├── service/
│           │                       │   └── MapboxCarAppService.kt
│           │                       └── testing/
│           │                           └── CarJavaInterfaceChecker.java
│           └── res/
│               ├── drawable/
│               │   ├── ic_pan_24.xml
│               │   ├── ic_zoom_in_24.xml
│               │   └── ic_zoom_out_24.xml
│               ├── layout/
│               │   └── activity_main.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── ic_launcher_background.xml
│               │   ├── strings.xml
│               │   └── themes.xml
│               └── xml/
│                   └── automotive_app_desc.xml
├── app/
│   ├── build.gradle.kts
│   ├── lint.xml
│   ├── mapbox-services-proguard-rules.pro
│   ├── permission.json
│   ├── proguard-rules.pro
│   ├── retrofit2-proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── testapp/
│       │   │                   ├── BaseMapTest.kt
│       │   │                   ├── CameraForCoordinatesTest.kt
│       │   │                   ├── ExampleOverviewActivityTest.kt
│       │   │                   ├── GeoJsonSourceMutateTest.kt
│       │   │                   ├── LoadStyleCallbackTest.kt
│       │   │                   ├── Utils.kt
│       │   │                   ├── annotation/
│       │   │                   │   ├── InteractionsTest.kt
│       │   │                   │   ├── UpdateAnnotationTest.kt
│       │   │                   │   ├── UpdateAnnotationWithMultiManagersTest.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── CircleAnnotationManagerAndroidTest.kt
│       │   │                   │       ├── PointAnnotationManagerAndroidTest.kt
│       │   │                   │       ├── PolygonAnnotationManagerAndroidTest.kt
│       │   │                   │       └── PolylineAnnotationManagerAndroidTest.kt
│       │   │                   ├── attribution/
│       │   │                   │   ├── AttributionAppCompatThemeTest.kt
│       │   │                   │   ├── AttributionMaterialThemeTest.kt
│       │   │                   │   ├── BaseAttributionThemeTest.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── AttributionAttributeParserDefaultValueTest.kt
│       │   │                   │       └── AttributionAttributeParserTest.kt
│       │   │                   ├── compass/
│       │   │                   │   └── generated/
│       │   │                   │       ├── CompassAttributeParserDefaultValueTest.kt
│       │   │                   │       └── CompassAttributeParserTest.kt
│       │   │                   ├── featurestate/
│       │   │                   │   ├── FeatureStateTest.kt
│       │   │                   │   └── StandardBuildingsFeatureStateTest.kt
│       │   │                   ├── gestures/
│       │   │                   │   ├── GestureActivityTest.kt
│       │   │                   │   ├── GestureInterceptedOnViewAnnotationTest.kt
│       │   │                   │   ├── GestureMapIdleTest.kt
│       │   │                   │   ├── GestureUiUtils.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── GesturesAttributeParserDefaultValueTest.kt
│       │   │                   │       └── GesturesAttributeParserTest.kt
│       │   │                   ├── integration/
│       │   │                   │   ├── BaseReuseIntegrationTest.kt
│       │   │                   │   ├── events/
│       │   │                   │   │   └── StyleLoadedEventTest.kt
│       │   │                   │   ├── fragment/
│       │   │                   │   │   ├── EmptyFragment.kt
│       │   │                   │   │   ├── FragmentScenarioTest.kt
│       │   │                   │   │   ├── FragmentTest.kt
│       │   │                   │   │   └── MapFragment.kt
│       │   │                   │   ├── surface/
│       │   │                   │   │   ├── MapViewSurfaceModeTest.kt
│       │   │                   │   │   ├── MapViewSurfaceModeWithRecyclerViewTest.kt
│       │   │                   │   │   └── SurfaceTest.kt
│       │   │                   │   └── texture/
│       │   │                   │       └── MapViewTextureModeTest.kt
│       │   │                   ├── locationcomponent/
│       │   │                   │   └── generated/
│       │   │                   │       ├── LocationComponentAttributeParserDefaultValueTest.kt
│       │   │                   │       └── LocationComponentAttributeParserTest.kt
│       │   │                   ├── logo/
│       │   │                   │   └── generated/
│       │   │                   │       ├── LogoAttributeParserDefaultValueTest.kt
│       │   │                   │       └── LogoAttributeParserTest.kt
│       │   │                   ├── observable/
│       │   │                   │   └── ObservableEventsTest.kt
│       │   │                   ├── overlay/
│       │   │                   │   └── MapOverlayPluginTest.kt
│       │   │                   ├── scalebar/
│       │   │                   │   └── generated/
│       │   │                   │       ├── ScaleBarAttributeParserDefaultValueTest.kt
│       │   │                   │       └── ScaleBarAttributeParserTest.kt
│       │   │                   └── viewport/
│       │   │                       └── ViewportPluginTest.kt
│       │   └── res/
│       │       └── layout/
│       │           └── view_annotation.xml
│       └── main/
│           ├── AndroidManifest.xml
│           ├── assets/
│           │   ├── annotations.json
│           │   ├── countries_hdi.json
│           │   ├── dva-sf-construction.geojson
│           │   ├── dva-sf-parkings.geojson
│           │   ├── dva-sf-route-alternative.geojson
│           │   ├── dva-sf-route-main.geojson
│           │   ├── ego_car.glb
│           │   ├── fragment-realestate-NY.json
│           │   ├── from_crema_to_council_crest.geojson
│           │   ├── long_route.json
│           │   ├── maine_polygon.geojson
│           │   ├── multiple_geometry_example.geojson
│           │   ├── navigation_route.json
│           │   ├── sf_airport_route.geojson
│           │   └── sportcar.glb
│           ├── cpp/
│           │   ├── CMakeLists.txt
│           │   └── example_custom_layer.cpp
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   ├── EmptyActivity.kt
│           │                   ├── EmptyFragmentActivity.kt
│           │                   ├── ExampleOverviewActivity.kt
│           │                   ├── MapboxApplication.kt
│           │                   ├── TestMapActivity.kt
│           │                   ├── adapter/
│           │                   │   ├── ExampleAdapter.kt
│           │                   │   └── ExampleSectionAdapter.kt
│           │                   ├── examples/
│           │                   │   ├── AnimatedImageSourceActivity.kt
│           │                   │   ├── BasicLocationPulsingCircleActivity.kt
│           │                   │   ├── CircleLayerClusteringActivity.kt
│           │                   │   ├── ClipLayerActivity.kt
│           │                   │   ├── CustomAttributionActivity.kt
│           │                   │   ├── DSLStylingActivity.kt
│           │                   │   ├── DebugModeActivity.kt
│           │                   │   ├── DistanceExpressionActivity.kt
│           │                   │   ├── EdgeToEdgeActivity.kt
│           │                   │   ├── ElevatedLineActivity.kt
│           │                   │   ├── FragmentBackStackActivity.kt
│           │                   │   ├── GeoJsonLayerInStackActivity.kt
│           │                   │   ├── GesturesActivity.kt
│           │                   │   ├── IconPropertyActivity.kt
│           │                   │   ├── ImageSourceActivity.kt
│           │                   │   ├── IndoorExampleActivity.kt
│           │                   │   ├── InsetMapActivity.kt
│           │                   │   ├── Interactive3DModelSourceActivity.kt
│           │                   │   ├── JavaInterfaceChecker.java
│           │                   │   ├── LargeGeojsonPerformanceActivity.kt
│           │                   │   ├── LegacyOfflineActivity.kt
│           │                   │   ├── LocationComponentActivity.kt
│           │                   │   ├── LocationComponentAnimationActivity.kt
│           │                   │   ├── LocationComponentModelAnimationActivity.kt
│           │                   │   ├── LocationTrackingActivity.kt
│           │                   │   ├── MapOverlayActivity.kt
│           │                   │   ├── MapViewCustomizationActivity.kt
│           │                   │   ├── MapboxMapRecorderActivity.kt
│           │                   │   ├── MapboxStudioStyleActivity.kt
│           │                   │   ├── MultiDisplayActivity.kt
│           │                   │   ├── MultiMapActivity.kt
│           │                   │   ├── NinePatchImageActivity.kt
│           │                   │   ├── OfflineActivity.kt
│           │                   │   ├── OngoingAnimationActivity.kt
│           │                   │   ├── OrnamentMarginActivity.kt
│           │                   │   ├── RawExpressionActivity.kt
│           │                   │   ├── RawGeoJsonActivity.kt
│           │                   │   ├── RawSourceLayerActivity.kt
│           │                   │   ├── RuntimeStylingActivity.kt
│           │                   │   ├── ScaleBarActivity.kt
│           │                   │   ├── SecondaryDisplayActivity.kt
│           │                   │   ├── SecondaryDisplayPresentationActivity.kt
│           │                   │   ├── ShowHideLayersActivity.kt
│           │                   │   ├── SimpleMapActivity.kt
│           │                   │   ├── SimulateNavigationRouteActivity.kt
│           │                   │   ├── SlotLayerActivity.kt
│           │                   │   ├── SpaceStationLocationActivity.kt
│           │                   │   ├── StandardStyleActivity.kt
│           │                   │   ├── StandardStyleInteractionsActivity.kt
│           │                   │   ├── StyleCirclesCategoricallyActivity.kt
│           │                   │   ├── StyleSwitchActivity.kt
│           │                   │   ├── SurfaceActivity.kt
│           │                   │   ├── SurfaceRecyclerViewActivity.kt
│           │                   │   ├── TextureViewActivity.kt
│           │                   │   ├── TextureViewAnimateActivity.kt
│           │                   │   ├── TintFillPatternActivity.kt
│           │                   │   ├── TransparentBackgroundActivity.kt
│           │                   │   ├── VectorTileSourceActivity.kt
│           │                   │   ├── ViewPagerActivity.kt
│           │                   │   ├── WithinExpressionActivity.kt
│           │                   │   ├── WmsSourceActivity.kt
│           │                   │   ├── annotation/
│           │                   │   │   ├── AnimatePointAnnotationActivity.kt
│           │                   │   │   └── AnnotationUtils.kt
│           │                   │   ├── camera/
│           │                   │   │   ├── CameraPredefinedAnimatorsActivity.kt
│           │                   │   │   ├── LowLevelCameraAnimatorActivity.kt
│           │                   │   │   └── RestrictBoundsActivity.kt
│           │                   │   ├── coroutines/
│           │                   │   │   └── featurestate/
│           │                   │   │       └── FeatureStateActivity.kt
│           │                   │   ├── customlayer/
│           │                   │   │   ├── CustomLayerActivity.kt
│           │                   │   │   ├── ExampleCustomLayer.kt
│           │                   │   │   ├── NativeCustomLayerActivity.kt
│           │                   │   │   ├── NativeExampleCustomLayer.kt
│           │                   │   │   ├── TriangleCustomLayer.kt
│           │                   │   │   ├── TriangleCustomLayerActivity.kt
│           │                   │   │   └── globe/
│           │                   │   │       ├── Cube.kt
│           │                   │   │       ├── CubeMesh.kt
│           │                   │   │       ├── GlobeCustomLayerActivity.kt
│           │                   │   │       ├── GlobeCustomLayerHost.kt
│           │                   │   │       ├── Matrix4f.kt
│           │                   │   │       ├── Program.kt
│           │                   │   │       ├── Utils.kt
│           │                   │   │       ├── VertexFloatBuffer.kt
│           │                   │   │       └── VertexIntBuffer.kt
│           │                   │   ├── datajoin/
│           │                   │   │   ├── CountriesData.kt
│           │                   │   │   └── DataJoinActivity.kt
│           │                   │   ├── fragment/
│           │                   │   │   ├── MapFragment.kt
│           │                   │   │   └── MapViewPager.kt
│           │                   │   ├── geofence/
│           │                   │   │   ├── ExtendedGeofencingActivity.kt
│           │                   │   │   └── SimpleGeofencingActivity.kt
│           │                   │   ├── globe/
│           │                   │   │   ├── GlobeActivity.kt
│           │                   │   │   ├── GlobeFlyToActivity.kt
│           │                   │   │   ├── HeatmapLayerGlobeActivity.kt
│           │                   │   │   └── SpinningGlobeActivity.kt
│           │                   │   ├── java/
│           │                   │   │   ├── DSLStylingJavaActivity.java
│           │                   │   │   └── RuntimeStylingJavaActivity.java
│           │                   │   ├── linesandpolygons/
│           │                   │   │   ├── DrawGeoJsonLineActivity.kt
│           │                   │   │   ├── DrawPolygonActivity.kt
│           │                   │   │   ├── LineGradientActivity.kt
│           │                   │   │   ├── MovingIconWithTrailingLineActivity.kt
│           │                   │   │   ├── PolygonHolesActivity.kt
│           │                   │   │   └── SnakingDirectionsRouteActivity.kt
│           │                   │   ├── localization/
│           │                   │   │   └── LocalizationActivity.kt
│           │                   │   ├── markersandcallouts/
│           │                   │   │   ├── AddMarkersSymbolActivity.kt
│           │                   │   │   ├── AddOneMarkerSymbolActivity.kt
│           │                   │   │   ├── AnimatedMarkerActivity.kt
│           │                   │   │   ├── CircleAnnotationActivity.kt
│           │                   │   │   ├── MultipleGeometriesActivity.kt
│           │                   │   │   ├── PointAnnotationActivity.kt
│           │                   │   │   ├── PointAnnotationClusterActivity.kt
│           │                   │   │   ├── PolygonAnnotationActivity.kt
│           │                   │   │   ├── PolylineAnnotationActivity.kt
│           │                   │   │   ├── infowindow/
│           │                   │   │   │   ├── InfoWindowActivity.kt
│           │                   │   │   │   ├── Marker.kt
│           │                   │   │   │   └── MarkerManager.kt
│           │                   │   │   └── viewannotation/
│           │                   │   │       ├── DynamicViewAnnotationActivity.kt
│           │                   │   │       ├── ViewAnnotationAnimationActivity.kt
│           │                   │   │       ├── ViewAnnotationBasicAddActivity.kt
│           │                   │   │       ├── ViewAnnotationShowcaseActivity.kt
│           │                   │   │       └── ViewAnnotationWithPointAnnotationActivity.kt
│           │                   │   ├── sky/
│           │                   │   │   ├── SkyLayerShowcaseActivity.kt
│           │                   │   │   └── SkyLayerSnapshotterActivity.kt
│           │                   │   ├── snapshotter/
│           │                   │   │   ├── DataDrivenMapSnapshotterActivity.kt
│           │                   │   │   ├── LocalStyleMapSnapshotterActivity.kt
│           │                   │   │   ├── MapSnapshotterActivity.kt
│           │                   │   │   └── MapViewSnapshotActivity.kt
│           │                   │   ├── style/
│           │                   │   │   ├── ColorThemeActivity.kt
│           │                   │   │   ├── CustomRasterSourceActivity.kt
│           │                   │   │   ├── PrecipitationActivity.kt
│           │                   │   │   ├── RasterColorizationActivity.kt
│           │                   │   │   ├── RasterParticlesActivity.kt
│           │                   │   │   ├── ThirdPartyVectorSourceActivity.kt
│           │                   │   │   └── TileJsonActivity.kt
│           │                   │   ├── terrain3D/
│           │                   │   │   ├── FillExtrusionActivity.kt
│           │                   │   │   ├── Lights3DActivity.kt
│           │                   │   │   ├── ModelLayerActivity.kt
│           │                   │   │   ├── SantaCatalinaActivity.kt
│           │                   │   │   └── Terrain3DShowcaseActivity.kt
│           │                   │   └── viewport/
│           │                   │       ├── AdvancedViewportGesturesExample.kt
│           │                   │       └── ViewportShowcaseActivity.kt
│           │                   ├── model/
│           │                   │   ├── IssModel.kt
│           │                   │   ├── IssPosition.kt
│           │                   │   └── SpecificExample.kt
│           │                   ├── utils/
│           │                   │   ├── BitmapUtils.kt
│           │                   │   ├── ItemClickSupport.kt
│           │                   │   ├── LocationPermissionHelper.kt
│           │                   │   ├── NavigationSimulator.kt
│           │                   │   ├── SimulateRouteLocationProvider.kt
│           │                   │   └── StorageUtils.kt
│           │                   └── wallpaper/
│           │                       └── MapWallpaper.kt
│           └── res/
│               ├── drawable/
│               │   ├── arrow_straight.xml
│               │   ├── bg_dva_eta.xml
│               │   ├── bg_dva_parking.xml
│               │   ├── bg_rounded_corner.xml
│               │   ├── ic_airplanemode_active_black_24dp.xml
│               │   ├── ic_baseline_refresh_24.xml
│               │   ├── ic_blue_marker.xml
│               │   ├── ic_callout_item_background.xml
│               │   ├── ic_cross.xml
│               │   ├── ic_layers.xml
│               │   ├── ic_layers_24dp.xml
│               │   ├── ic_layers_clear.xml
│               │   ├── ic_legacy_callout.xml
│               │   ├── ic_paint.xml
│               │   ├── ic_red_marker.xml
│               │   ├── ic_swap_horiz_white_24dp.xml
│               │   ├── ic_translate_white_24dp.xml
│               │   └── mapbox_mylocation_bg_shape.xml
│               ├── drawable-hdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-mdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xxhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xxxhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── layout/
│               │   ├── activity_add_marker_symbol.xml
│               │   ├── activity_animated_imagesource.xml
│               │   ├── activity_animated_marker.xml
│               │   ├── activity_annotation.xml
│               │   ├── activity_camera_predefined_animators.xml
│               │   ├── activity_custom_attribution.xml
│               │   ├── activity_custom_layer.xml
│               │   ├── activity_custom_raster_source.xml
│               │   ├── activity_dds_draw_polygon.xml
│               │   ├── activity_dds_moving_icon_with_trailing_line.xml
│               │   ├── activity_debug.xml
│               │   ├── activity_dynamic_view_annotations.xml
│               │   ├── activity_edge_to_edge.xml
│               │   ├── activity_empty_fab.xml
│               │   ├── activity_example_overview.xml
│               │   ├── activity_extended_geofencing.xml
│               │   ├── activity_feature_state.xml
│               │   ├── activity_fill_extrusion.xml
│               │   ├── activity_gestures.xml
│               │   ├── activity_globe_custom_layer.xml
│               │   ├── activity_heatmap_layer.xml
│               │   ├── activity_icon_property.xml
│               │   ├── activity_image_source.xml
│               │   ├── activity_indoor_example.xml
│               │   ├── activity_inset_map.xml
│               │   ├── activity_interactive_3d_model_source.xml
│               │   ├── activity_javaservices_snaking_directions_route.xml
│               │   ├── activity_legacy_offline.xml
│               │   ├── activity_line_gradient.xml
│               │   ├── activity_location_component.xml
│               │   ├── activity_location_component_animation.xml
│               │   ├── activity_location_layer_basic_pulsing_circle.xml
│               │   ├── activity_map_localization.xml
│               │   ├── activity_map_overlay.xml
│               │   ├── activity_map_view_customization.xml
│               │   ├── activity_mapview.xml
│               │   ├── activity_multi_display.xml
│               │   ├── activity_multi_map.xml
│               │   ├── activity_multiple_geometries.xml
│               │   ├── activity_offline.xml
│               │   ├── activity_precipitations.xml
│               │   ├── activity_recycler.xml
│               │   ├── activity_restrict_bounds.xml
│               │   ├── activity_rts_fill_pattern_tint.xml
│               │   ├── activity_scale_bar.xml
│               │   ├── activity_secondary_display.xml
│               │   ├── activity_secondary_display_presentation.xml
│               │   ├── activity_show_hide_layers.xml
│               │   ├── activity_simple_geofencing.xml
│               │   ├── activity_sky_layer.xml
│               │   ├── activity_sky_snapshotter.xml
│               │   ├── activity_slot_layer.xml
│               │   ├── activity_standard_style.xml
│               │   ├── activity_style_mapbox_studio.xml
│               │   ├── activity_style_switch.xml
│               │   ├── activity_style_vector_source.xml
│               │   ├── activity_surface.xml
│               │   ├── activity_terrain_showcase.xml
│               │   ├── activity_texture_view.xml
│               │   ├── activity_transparent_background.xml
│               │   ├── activity_view_annotation_showcase.xml
│               │   ├── activity_view_snapshot.xml
│               │   ├── activity_viewpager.xml
│               │   ├── activity_viewport_animation.xml
│               │   ├── activity_wms_source.xml
│               │   ├── generated_test_attribution.xml
│               │   ├── generated_test_compass.xml
│               │   ├── generated_test_gestures.xml
│               │   ├── generated_test_locationcomponent.xml
│               │   ├── generated_test_logo.xml
│               │   ├── generated_test_scalebar.xml
│               │   ├── item_callout_view.xml
│               │   ├── item_display_info.xml
│               │   ├── item_dva_alt_eta.xml
│               │   ├── item_dva_construction.xml
│               │   ├── item_dva_eta.xml
│               │   ├── item_dva_parking.xml
│               │   ├── item_gesture_alert.xml
│               │   ├── item_legacy_callout_view.xml
│               │   ├── item_map.xml
│               │   ├── item_single_example.xml
│               │   ├── item_spinner_view.xml
│               │   └── section_main_layout.xml
│               ├── menu/
│               │   ├── menu_bounds.xml
│               │   ├── menu_clip_layer.xml
│               │   ├── menu_color_theme.xml
│               │   ├── menu_custom_layer.xml
│               │   ├── menu_debug_mode.xml
│               │   ├── menu_gestures.xml
│               │   ├── menu_languages.xml
│               │   ├── menu_location_component.xml
│               │   ├── menu_location_component_model_customisation.xml
│               │   ├── menu_predefined_animators.xml
│               │   ├── menu_pulsing_location_mode.xml
│               │   ├── menu_standard_style_interactions.xml
│               │   ├── menu_symbol.xml
│               │   ├── menu_tilejson.xml
│               │   └── menu_view_annotation.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── actions.xml
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   ├── example_categories.xml
│               │   ├── example_descriptions.xml
│               │   ├── example_titles.xml
│               │   ├── ic_launcher_background.xml
│               │   ├── ids.xml
│               │   ├── interpolators.xml
│               │   ├── strings.xml
│               │   └── styles.xml
│               └── xml/
│                   └── map_wallpaper.xml
├── build.gradle.kts
├── cloudformation/
│   └── ci.template.js
├── codecov.yml
├── compose-app/
│   ├── .gitignore
│   ├── build.gradle.kts
│   ├── mapbox-services-proguard-rules.pro
│   ├── proguard-rules.pro
│   ├── retrofit2-proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── assets/
│           │   ├── dva-sf-construction.geojson
│           │   ├── dva-sf-parkings.geojson
│           │   ├── dva-sf-route-alternative.geojson
│           │   ├── dva-sf-route-main.geojson
│           │   ├── fragment-realestate-NY.json
│           │   ├── navigation_route.json
│           │   └── sportcar.glb
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── compose/
│           │                   └── testapp/
│           │                       ├── ExampleCategoryItem.kt
│           │                       ├── ExampleListItem.kt
│           │                       ├── ExampleOverviewActivity.kt
│           │                       ├── ExampleScaffold.kt
│           │                       ├── MapboxApplication.kt
│           │                       ├── data/
│           │                       │   ├── ExamplesProvider.kt
│           │                       │   └── model/
│           │                       │       └── ExampleEntry.kt
│           │                       ├── examples/
│           │                       │   ├── animation/
│           │                       │   │   └── MapViewportAnimationsActivity.kt
│           │                       │   ├── annotation/
│           │                       │   │   ├── CircleAnnotationActivity.kt
│           │                       │   │   ├── CustomVectorIconsActivity.kt
│           │                       │   │   ├── DynamicViewAnnotationActivity.kt
│           │                       │   │   ├── MarkersActivity.kt
│           │                       │   │   ├── PointAnnotationActivity.kt
│           │                       │   │   ├── PointAnnotationClusterActivity.kt
│           │                       │   │   ├── PolygonAnnotationActivity.kt
│           │                       │   │   ├── PolylineAnnotationActivity.kt
│           │                       │   │   └── ViewAnnotationActivity.kt
│           │                       │   ├── basic/
│           │                       │   │   ├── AccessibilityScaleActivity.kt
│           │                       │   │   ├── DebugModeActivity.kt
│           │                       │   │   ├── EdgeToEdgeActivity.kt
│           │                       │   │   ├── LazyColumnMapActivity.kt
│           │                       │   │   ├── MultiDisplayActivity.kt
│           │                       │   │   ├── MultiMapActivity.kt
│           │                       │   │   ├── QueryRenderedFeatureActivity.kt
│           │                       │   │   └── SimpleMapActivity.kt
│           │                       │   ├── location/
│           │                       │   │   ├── LocationComponentActivity.kt
│           │                       │   │   └── NavigationSimulationActivity.kt
│           │                       │   ├── model/
│           │                       │   │   ├── Animated3DModelActivity.kt
│           │                       │   │   └── Interactive3DModelFeatureStateActivity.kt
│           │                       │   ├── ornaments/
│           │                       │   │   ├── CustomAttributionActivity.kt
│           │                       │   │   └── OrnamentCustomisationActivity.kt
│           │                       │   ├── style/
│           │                       │   │   ├── AnimatedImageSourceActivity.kt
│           │                       │   │   ├── AppearancesActivity.kt
│           │                       │   │   ├── ClipLayerActivity.kt
│           │                       │   │   ├── ColorThemeActivity.kt
│           │                       │   │   ├── ElevatedLineActivity.kt
│           │                       │   │   ├── GenericStylePositionsActivity.kt
│           │                       │   │   ├── ImageSourceActivity.kt
│           │                       │   │   ├── InteractionsActivity.kt
│           │                       │   │   ├── ModelLayerActivity.kt
│           │                       │   │   ├── PrecipitationsActivity.kt
│           │                       │   │   ├── StandardStyleActivity.kt
│           │                       │   │   ├── StyleCompositionActivity.kt
│           │                       │   │   ├── StyleImportsActivity.kt
│           │                       │   │   ├── StyleStatesActivity.kt
│           │                       │   │   └── TerrainActivity.kt
│           │                       │   └── utils/
│           │                       │       ├── AnnotationUtils.kt
│           │                       │       ├── CityLocations.kt
│           │                       │       ├── PermissionUtils.kt
│           │                       │       └── SimulateRouteLocationProvider.kt
│           │                       ├── ui/
│           │                       │   └── theme/
│           │                       │       ├── Color.kt
│           │                       │       ├── Shape.kt
│           │                       │       ├── Theme.kt
│           │                       │       └── Type.kt
│           │                       └── utils/
│           │                           ├── FrameStatsRecorder.kt
│           │                           └── StorageUtils.kt
│           └── res/
│               ├── drawable/
│               │   ├── arrow_straight.xml
│               │   ├── bg_dva_eta.xml
│               │   ├── bg_dva_parking.xml
│               │   ├── ic_blue_marker.xml
│               │   └── ic_red_marker.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── example_categories.xml
│               │   ├── example_descriptions.xml
│               │   ├── example_titles.xml
│               │   ├── ic_launcher_background.xml
│               │   ├── strings.xml
│               │   └── themes.xml
│               └── values-night/
│                   └── themes.xml
├── extension-androidauto/
│   ├── .gitignore
│   ├── CHANGELOG-v0.5.0.md
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-androidauto.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── androidauto/
│       │                           ├── CarMapSurfaceOwner.kt
│       │                           ├── DefaultMapboxCarMapGestureHandler.kt
│       │                           ├── MapSurfaceProvider.kt
│       │                           ├── MapboxCarMap.kt
│       │                           ├── MapboxCarMapEx.kt
│       │                           ├── MapboxCarMapGestureHandler.java
│       │                           ├── MapboxCarMapInitializer.kt
│       │                           ├── MapboxCarMapObserver.java
│       │                           ├── MapboxCarMapScreenInstaller.kt
│       │                           ├── MapboxCarMapSessionInstaller.kt
│       │                           ├── MapboxCarMapSurface.kt
│       │                           ├── MapboxCarTelemetryEvents.kt
│       │                           └── widgets/
│       │                               ├── CompassWidget.kt
│       │                               └── LogoWidget.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── androidauto/
│                                   ├── CarMapSurfaceOwnerTest.kt
│                                   ├── DefaultMapboxCarMapGestureHandlerTest.kt
│                                   ├── MapboxCarMapScreenInstallerTest.kt
│                                   ├── MapboxCarMapSessionInstallerTest.kt
│                                   ├── MapboxCarMapTest.kt
│                                   └── testing/
│                                       └── TestLifecycleOwner.kt
├── extension-compose/
│   ├── .gitignore
│   ├── CHANGELOG-v0.1.0.md
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-compose.api
│   ├── build.gradle.kts
│   ├── lint.xml
│   └── src/
│       ├── androidTest/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── extension/
│       │   │                   └── compose/
│       │   │                       ├── MapIntegrationTests.kt
│       │   │                       ├── annotation/
│       │   │                       │   ├── AnnotationTests.kt
│       │   │                       │   └── ViewAnnotationTest.kt
│       │   │                       ├── internal/
│       │   │                       │   └── utils/
│       │   │                       │       └── CityLocations.kt
│       │   │                       ├── multimap/
│       │   │                       │   └── MultiMapTest.kt
│       │   │                       └── style/
│       │   │                           ├── LayerPositionAwareNodeTest.kt
│       │   │                           └── standard/
│       │   │                               └── StandardStyleConfigurationTest.kt
│       │   └── res/
│       │       └── values/
│       │           └── strings.xml
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── extension/
│       │   │                   └── compose/
│       │   │                       ├── ComposeMapInitOptions.kt
│       │   │                       ├── DisposableMapEffect.kt
│       │   │                       ├── MapEffect.kt
│       │   │                       ├── MapState.kt
│       │   │                       ├── MapboxMap.kt
│       │   │                       ├── MapboxMapComposable.kt
│       │   │                       ├── MapboxMapScope.kt
│       │   │                       ├── MapboxMapScopeMarker.kt
│       │   │                       ├── animation/
│       │   │                       │   └── viewport/
│       │   │                       │       └── MapViewportState.kt
│       │   │                       ├── annotation/
│       │   │                       │   ├── IconImage.kt
│       │   │                       │   ├── Marker.kt
│       │   │                       │   ├── MarkerAnimation.kt
│       │   │                       │   ├── MarkerAnimationState.kt
│       │   │                       │   ├── ViewAnnotation.kt
│       │   │                       │   ├── generated/
│       │   │                       │   │   ├── CircleAnnotation.kt
│       │   │                       │   │   ├── CircleAnnotationGroup.kt
│       │   │                       │   │   ├── CircleAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── CircleAnnotationGroupState.kt
│       │   │                       │   │   ├── CircleAnnotationInteractionsState.kt
│       │   │                       │   │   ├── CircleAnnotationOptionsExt.kt
│       │   │                       │   │   ├── CircleAnnotationState.kt
│       │   │                       │   │   ├── PointAnnotation.kt
│       │   │                       │   │   ├── PointAnnotationGroup.kt
│       │   │                       │   │   ├── PointAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PointAnnotationGroupState.kt
│       │   │                       │   │   ├── PointAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PointAnnotationOptionsExt.kt
│       │   │                       │   │   ├── PointAnnotationState.kt
│       │   │                       │   │   ├── PolygonAnnotation.kt
│       │   │                       │   │   ├── PolygonAnnotationGroup.kt
│       │   │                       │   │   ├── PolygonAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PolygonAnnotationGroupState.kt
│       │   │                       │   │   ├── PolygonAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PolygonAnnotationOptionsExt.kt
│       │   │                       │   │   ├── PolygonAnnotationState.kt
│       │   │                       │   │   ├── PolylineAnnotation.kt
│       │   │                       │   │   ├── PolylineAnnotationGroup.kt
│       │   │                       │   │   ├── PolylineAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PolylineAnnotationGroupState.kt
│       │   │                       │   │   ├── PolylineAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PolylineAnnotationOptionsExt.kt
│       │   │                       │   │   └── PolylineAnnotationState.kt
│       │   │                       │   └── internal/
│       │   │                       │       ├── BaseAnnotationNode.kt
│       │   │                       │       └── generated/
│       │   │                       │           ├── CircleAnnotationManagerNode.kt
│       │   │                       │           ├── CircleAnnotationNode.kt
│       │   │                       │           ├── PointAnnotationManagerNode.kt
│       │   │                       │           ├── PointAnnotationNode.kt
│       │   │                       │           ├── PolygonAnnotationManagerNode.kt
│       │   │                       │           ├── PolygonAnnotationNode.kt
│       │   │                       │           ├── PolylineAnnotationManagerNode.kt
│       │   │                       │           └── PolylineAnnotationNode.kt
│       │   │                       ├── internal/
│       │   │                       │   ├── ComposeTelemetryEvents.kt
│       │   │                       │   ├── LayerPositionAwareNode.kt
│       │   │                       │   ├── MapApplier.kt
│       │   │                       │   ├── MapEventCancelableHolder.kt
│       │   │                       │   ├── MapPreviewPlaceholder.kt
│       │   │                       │   ├── MapViewLifecycle.kt
│       │   │                       │   ├── MapboxMapNode.kt
│       │   │                       │   ├── SettingsUtils.kt
│       │   │                       │   └── StyleLifecycleAwareNode.kt
│       │   │                       ├── ornaments/
│       │   │                       │   ├── attribution/
│       │   │                       │   │   ├── MapAttributionScope.kt
│       │   │                       │   │   └── internal/
│       │   │                       │   │       └── AttributionComposePlugin.kt
│       │   │                       │   ├── compass/
│       │   │                       │   │   └── MapCompassScope.kt
│       │   │                       │   ├── logo/
│       │   │                       │   │   └── MapLogoScope.kt
│       │   │                       │   └── scalebar/
│       │   │                       │       ├── MapScaleBarScope.kt
│       │   │                       │       └── internal/
│       │   │                       │           └── ScaleBarComposePlugin.kt
│       │   │                       └── style/
│       │   │                           ├── IdGenerator.kt
│       │   │                           ├── MapboxStyleComposable.kt
│       │   │                           ├── PropertyTypes.kt
│       │   │                           ├── Style.kt
│       │   │                           ├── StyleColorTheme.kt
│       │   │                           ├── StyleImage.kt
│       │   │                           ├── StyleState.kt
│       │   │                           ├── atmosphere/
│       │   │                           │   ├── AtmosphereStateApplier.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── AtmosphereState.kt
│       │   │                           ├── imports/
│       │   │                           │   ├── MapboxStyleImportComposable.kt
│       │   │                           │   ├── StyleImportInteractionsState.kt
│       │   │                           │   ├── StyleImportState.kt
│       │   │                           │   └── StyleImportsScope.kt
│       │   │                           ├── interactions/
│       │   │                           │   ├── BasicStyleInteractions.kt
│       │   │                           │   ├── StyleInteractionsState.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── FeaturesetFeatureScope.kt
│       │   │                           ├── internal/
│       │   │                           │   ├── ComposeTypeUtils.kt
│       │   │                           │   ├── MapStyleNode.kt
│       │   │                           │   ├── ParcelerUtils.kt
│       │   │                           │   ├── StyleAwareNode.kt
│       │   │                           │   ├── StyleConfig.kt
│       │   │                           │   ├── StyleLayerPosition.kt
│       │   │                           │   └── StyleSlot.kt
│       │   │                           ├── layers/
│       │   │                           │   ├── LayerInteractionsState.kt
│       │   │                           │   ├── PropertyTypes.kt
│       │   │                           │   ├── generated/
│       │   │                           │   │   ├── BackgroundLayer.kt
│       │   │                           │   │   ├── BackgroundLayerState.kt
│       │   │                           │   │   ├── CircleLayer.kt
│       │   │                           │   │   ├── CircleLayerState.kt
│       │   │                           │   │   ├── ClipLayer.kt
│       │   │                           │   │   ├── ClipLayerState.kt
│       │   │                           │   │   ├── FillExtrusionLayer.kt
│       │   │                           │   │   ├── FillExtrusionLayerState.kt
│       │   │                           │   │   ├── FillLayer.kt
│       │   │                           │   │   ├── FillLayerState.kt
│       │   │                           │   │   ├── HeatmapLayer.kt
│       │   │                           │   │   ├── HeatmapLayerState.kt
│       │   │                           │   │   ├── HillshadeLayer.kt
│       │   │                           │   │   ├── HillshadeLayerState.kt
│       │   │                           │   │   ├── LayerProperties.kt
│       │   │                           │   │   ├── LineLayer.kt
│       │   │                           │   │   ├── LineLayerState.kt
│       │   │                           │   │   ├── LocationIndicatorLayer.kt
│       │   │                           │   │   ├── LocationIndicatorLayerState.kt
│       │   │                           │   │   ├── ModelLayer.kt
│       │   │                           │   │   ├── ModelLayerState.kt
│       │   │                           │   │   ├── RasterLayer.kt
│       │   │                           │   │   ├── RasterLayerState.kt
│       │   │                           │   │   ├── RasterParticleLayer.kt
│       │   │                           │   │   ├── RasterParticleLayerState.kt
│       │   │                           │   │   ├── SkyLayer.kt
│       │   │                           │   │   ├── SkyLayerState.kt
│       │   │                           │   │   ├── SymbolLayer.kt
│       │   │                           │   │   └── SymbolLayerState.kt
│       │   │                           │   └── internal/
│       │   │                           │       └── LayerNode.kt
│       │   │                           ├── lights/
│       │   │                           │   ├── LightsState.kt
│       │   │                           │   ├── generated/
│       │   │                           │   │   ├── AmbientLightState.kt
│       │   │                           │   │   ├── DirectionalLightState.kt
│       │   │                           │   │   ├── FlatLightState.kt
│       │   │                           │   │   └── LightsProperties.kt
│       │   │                           │   └── internal/
│       │   │                           │       └── MapboxLight.kt
│       │   │                           ├── precipitations/
│       │   │                           │   ├── RainStateApplier.kt
│       │   │                           │   ├── SnowStateApplier.kt
│       │   │                           │   └── generated/
│       │   │                           │       ├── RainState.kt
│       │   │                           │       └── SnowState.kt
│       │   │                           ├── projection/
│       │   │                           │   └── generated/
│       │   │                           │       └── Projection.kt
│       │   │                           ├── sources/
│       │   │                           │   ├── PropertyTypes.kt
│       │   │                           │   ├── SourceState.kt
│       │   │                           │   └── generated/
│       │   │                           │       ├── GeoJsonSourceState.kt
│       │   │                           │       ├── ImageSourceState.kt
│       │   │                           │       ├── ModelSourceState.kt
│       │   │                           │       ├── RasterArraySourceState.kt
│       │   │                           │       ├── RasterDemSourceState.kt
│       │   │                           │       ├── RasterSourceState.kt
│       │   │                           │       ├── SourceProperties.kt
│       │   │                           │       └── VectorSourceState.kt
│       │   │                           ├── standard/
│       │   │                           │   ├── BaseStandardStyleConfigurationState.kt
│       │   │                           │   ├── BaseStandardStyleState.kt
│       │   │                           │   ├── MapboxStandardSatelliteStyle.kt
│       │   │                           │   ├── MapboxStandardStyle.kt
│       │   │                           │   ├── StandardSatelliteStyleConfigurationState.kt
│       │   │                           │   ├── StandardSatelliteStyleState.kt
│       │   │                           │   ├── StandardStyleConfigurationState.kt
│       │   │                           │   ├── StandardStyleState.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── StandardStyleInteractionsState.kt
│       │   │                           └── terrain/
│       │   │                               ├── TerrainStateApplier.kt
│       │   │                               └── generated/
│       │   │                                   └── TerrainState.kt
│       │   └── res/
│       │       ├── drawable/
│       │       │   ├── default_marker.xml
│       │       │   ├── default_marker_inner.xml
│       │       │   ├── default_marker_inner_stroke.xml
│       │       │   ├── default_marker_outer.xml
│       │       │   └── default_marker_outer_stroke.xml
│       │       └── values/
│       │           └── ids.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── compose/
│                                   ├── MapApplierTest.kt
│                                   ├── MapNodeExt.kt
│                                   ├── SimpleLayerPositionAwareNode.kt
│                                   ├── annotation/
│                                   │   └── MarkerAnimationTest.kt
│                                   ├── internal/
│                                   │   └── LayerPositionAwareNodeTest.kt
│                                   └── style/
│                                       ├── PropertiesTests.kt
│                                       ├── layers/
│                                       │   └── PropertiesTests.kt
│                                       └── projection/
│                                           └── ProjectionTests.kt
├── extension-localization/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-localization.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── localization/
│       │                           ├── Localization.kt
│       │                           ├── StyleInterfaceExtension.kt
│       │                           └── SupportedLanguages.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── localization/
│                                   └── SupportedLanguagesTest.kt
├── extension-style/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-style.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── style/
│       │                           ├── StyleExtensionImpl.kt
│       │                           ├── atmosphere/
│       │                           │   └── generated/
│       │                           │       ├── Atmosphere.kt
│       │                           │       └── AtmosphereExt.kt
│       │                           ├── color/
│       │                           │   └── ColorThemeExt.kt
│       │                           ├── expressions/
│       │                           │   ├── dsl/
│       │                           │   │   └── generated/
│       │                           │   │       └── ExpressionDsl.kt
│       │                           │   ├── generated/
│       │                           │   │   └── Expression.kt
│       │                           │   └── types/
│       │                           │       └── FormatSection.kt
│       │                           ├── image/
│       │                           │   ├── ImageExt.kt
│       │                           │   ├── ImageExtensionImpl.kt
│       │                           │   ├── ImageNinePatchExtensionImpl.kt
│       │                           │   ├── NinePatchImage.kt
│       │                           │   └── NinePatchUtils.kt
│       │                           ├── layers/
│       │                           │   ├── CustomLayer.kt
│       │                           │   ├── Layer.kt
│       │                           │   ├── LayerExt.kt
│       │                           │   ├── generated/
│       │                           │   │   ├── BackgroundLayer.kt
│       │                           │   │   ├── CircleLayer.kt
│       │                           │   │   ├── ClipLayer.kt
│       │                           │   │   ├── FillExtrusionLayer.kt
│       │                           │   │   ├── FillLayer.kt
│       │                           │   │   ├── HeatmapLayer.kt
│       │                           │   │   ├── HillshadeLayer.kt
│       │                           │   │   ├── LineLayer.kt
│       │                           │   │   ├── LocationIndicatorLayer.kt
│       │                           │   │   ├── ModelLayer.kt
│       │                           │   │   ├── RasterLayer.kt
│       │                           │   │   ├── RasterParticleLayer.kt
│       │                           │   │   ├── SkyLayer.kt
│       │                           │   │   ├── SlotLayer.kt
│       │                           │   │   └── SymbolLayer.kt
│       │                           │   └── properties/
│       │                           │       ├── PropertyValue.kt
│       │                           │       └── generated/
│       │                           │           └── Property.kt
│       │                           ├── light/
│       │                           │   ├── DynamicLight.kt
│       │                           │   ├── Light.kt
│       │                           │   ├── LightExt.kt
│       │                           │   ├── LightPosition.kt
│       │                           │   └── generated/
│       │                           │       ├── AmbientLight.kt
│       │                           │       ├── DirectionalLight.kt
│       │                           │       └── FlatLight.kt
│       │                           ├── model/
│       │                           │   ├── ModelExt.kt
│       │                           │   └── ModelExtensionImpl.kt
│       │                           ├── precipitations/
│       │                           │   └── generated/
│       │                           │       ├── Rain.kt
│       │                           │       ├── RainExt.kt
│       │                           │       ├── Snow.kt
│       │                           │       └── SnowExt.kt
│       │                           ├── projection/
│       │                           │   └── generated/
│       │                           │       ├── Projection.kt
│       │                           │       └── ProjectionExt.kt
│       │                           ├── sources/
│       │                           │   ├── CustomGeometrySource.kt
│       │                           │   ├── CustomRasterSource.kt
│       │                           │   ├── GeoJsonSourceExt.kt
│       │                           │   ├── ImageSourceExt.kt
│       │                           │   ├── Source.kt
│       │                           │   ├── SourceExt.kt
│       │                           │   ├── TileSet.kt
│       │                           │   └── generated/
│       │                           │       ├── GeoJsonSource.kt
│       │                           │       ├── ImageSource.kt
│       │                           │       ├── ModelSource.kt
│       │                           │       ├── ModelSourceModel.kt
│       │                           │       ├── RasterArraySource.kt
│       │                           │       ├── RasterDemSource.kt
│       │                           │       ├── RasterSource.kt
│       │                           │       ├── SourceProperties.kt
│       │                           │       └── VectorSource.kt
│       │                           ├── terrain/
│       │                           │   └── generated/
│       │                           │       ├── Terrain.kt
│       │                           │       └── TerrainExt.kt
│       │                           ├── types/
│       │                           │   ├── Formatted.kt
│       │                           │   ├── FormattedSection.kt
│       │                           │   ├── PromoteId.kt
│       │                           │   ├── StyleTransition.kt
│       │                           │   └── TypeDSLs.kt
│       │                           └── utils/
│       │                               ├── ColorUtils.kt
│       │                               ├── ExpectedUtils.kt
│       │                               ├── StyleTelemetryEvents.kt
│       │                               └── TypeUtils.kt
│       └── test/
│           └── java/
│               ├── android/
│               │   └── util/
│               │       └── Log.java
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── style/
│                                   ├── EqualsHashCodeTest.kt
│                                   ├── ShadowStyleManager.java
│                                   ├── atmosphere/
│                                   │   └── generated/
│                                   │       └── AtmosphereTest.kt
│                                   ├── expressions/
│                                   │   ├── LiteralExpressionTest.kt
│                                   │   └── generated/
│                                   │       └── ExpressionTest.kt
│                                   ├── image/
│                                   │   ├── ImageNinePatchExtensionImplTest.kt
│                                   │   └── ImagePluginImplTest.kt
│                                   ├── layers/
│                                   │   ├── LayerExtTest.kt
│                                   │   └── generated/
│                                   │       ├── BackgroundLayerTest.kt
│                                   │       ├── CircleLayerTest.kt
│                                   │       ├── ClipLayerTest.kt
│                                   │       ├── FillExtrusionLayerTest.kt
│                                   │       ├── FillLayerTest.kt
│                                   │       ├── HeatmapLayerTest.kt
│                                   │       ├── HillshadeLayerTest.kt
│                                   │       ├── LineLayerTest.kt
│                                   │       ├── LocationIndicatorLayerTest.kt
│                                   │       ├── ModelLayerTest.kt
│                                   │       ├── RasterLayerTest.kt
│                                   │       ├── RasterParticleLayerTest.kt
│                                   │       ├── SkyLayerTest.kt
│                                   │       └── SymbolLayerTest.kt
│                                   ├── light/
│                                   │   └── generated/
│                                   │       ├── AmbientLightTest.kt
│                                   │       ├── DirectionalLightTest.kt
│                                   │       └── FlatLightTest.kt
│                                   ├── precipitations/
│                                   │   └── generated/
│                                   │       ├── RainTest.kt
│                                   │       └── SnowTest.kt
│                                   ├── sources/
│                                   │   ├── CustomGeometrySourceTest.kt
│                                   │   ├── CustomRasterSourceTest.kt
│                                   │   ├── GeoJsonSourceMutateTest.kt
│                                   │   ├── ImageSourceExtTest.kt
│                                   │   ├── TileSetTest.kt
│                                   │   └── generated/
│                                   │       ├── GeoJsonSourceTest.kt
│                                   │       ├── ImageSourceTest.kt
│                                   │       ├── ModelSourceModelTest.kt
│                                   │       ├── ModelSourceTest.kt
│                                   │       ├── RasterArraySourceTest.kt
│                                   │       ├── RasterDemSourceTest.kt
│                                   │       ├── RasterSourceTest.kt
│                                   │       └── VectorSourceTest.kt
│                                   ├── terrain/
│                                   │   └── generated/
│                                   │       └── TerrainTest.kt
│                                   └── utils/
│                                       ├── ColorUtilsTest.kt
│                                       ├── PromoteIdTest.kt
│                                       └── TypeUtilsTest.kt
├── extension-style-app/
│   ├── build.gradle.kts
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── testapp/
│       │                       └── style/
│       │                           ├── BaseStyleTest.kt
│       │                           ├── atmosphere/
│       │                           │   └── generated/
│       │                           │       └── AtmosphereTest.kt
│       │                           ├── expressions/
│       │                           │   └── ExpressionTest.kt
│       │                           ├── layers/
│       │                           │   ├── CustomLayerTest.kt
│       │                           │   ├── SlotLayerTest.kt
│       │                           │   └── generated/
│       │                           │       ├── BackgroundLayerTest.kt
│       │                           │       ├── CircleLayerTest.kt
│       │                           │       ├── ClipLayerTest.kt
│       │                           │       ├── FillExtrusionLayerTest.kt
│       │                           │       ├── FillLayerTest.kt
│       │                           │       ├── HeatmapLayerTest.kt
│       │                           │       ├── HillshadeLayerTest.kt
│       │                           │       ├── LineLayerTest.kt
│       │                           │       ├── LocationIndicatorLayerTest.kt
│       │                           │       ├── ModelLayerTest.kt
│       │                           │       ├── RasterLayerTest.kt
│       │                           │       ├── RasterParticleLayerTest.kt
│       │                           │       ├── SkyLayerTest.kt
│       │                           │       └── SymbolLayerTest.kt
│       │                           ├── light/
│       │                           │   ├── LightTest.kt
│       │                           │   └── generated/
│       │                           │       ├── AmbientLightTest.kt
│       │                           │       ├── DirectionalLightTest.kt
│       │                           │       └── FlatLightTest.kt
│       │                           ├── precipitations/
│       │                           │   └── generated/
│       │                           │       ├── RainTest.kt
│       │                           │       └── SnowTest.kt
│       │                           ├── sources/
│       │                           │   ├── RasterArraySourceTest.kt
│       │                           │   └── generated/
│       │                           │       ├── GeoJsonSourceTest.kt
│       │                           │       ├── ImageSourceTest.kt
│       │                           │       ├── ModelSourceModelTest.kt
│       │                           │       ├── ModelSourceTest.kt
│       │                           │       ├── RasterArraySourceTest.kt
│       │                           │       ├── RasterDemSourceTest.kt
│       │                           │       ├── RasterSourceTest.kt
│       │                           │       └── VectorSourceTest.kt
│       │                           ├── terrain/
│       │                           │   └── generated/
│       │                           │       └── TerrainTest.kt
│       │                           └── utils/
│       │                               └── TypeUtilsTest.kt
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   └── style/
│           │                       └── MainActivity.kt
│           └── res/
│               └── values/
│                   └── ids.xml
├── extension-style-lint-rules/
│   ├── .gitignore
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── lint/
│       │   │                   └── style/
│       │   │                       ├── MapboxStyleDslDetector.kt
│       │   │                       ├── StyleIssueRegistry.kt
│       │   │                       ├── UnusedStyleDslDetector.kt
│       │   │                       └── expressions/
│       │   │                           ├── IllegalNumberOfArgumentsDetector.kt
│       │   │                           ├── MapboxExpressionDslDetector.kt
│       │   │                           └── UnusedLiteralDetector.kt
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               └── com.android.tools.lint.client.api.IssueRegistry
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── lint/
│                               └── style/
│                                   ├── Stubs.kt
│                                   ├── UnusedStyleDslDetectorTest.kt
│                                   └── expressions/
│                                       ├── IllegalNumberOfArgumentsDetectorTest.kt
│                                       └── UnusedLiteralDetectorTest.kt
├── gradle/
│   ├── apps.versions.toml
│   ├── commonlibs.versions.toml
│   ├── dependency-updates.gradle
│   ├── ktlint.gradle.kts
│   ├── libs.versions.toml
│   ├── lint.gradle
│   ├── metalava.gradle
│   ├── play-publisher.gradle
│   ├── script-git-version.gradle
│   ├── track-public-apis.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mapbox-convention-plugin/
│   ├── README.md
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── gradle/
│                               └── plugins/
│                                   ├── MapboxPlugins.kt
│                                   ├── extensions/
│                                   │   ├── MapboxApplicationExtension.kt
│                                   │   ├── MapboxDependenciesExtension.kt
│                                   │   ├── MapboxDependencyExtension.kt
│                                   │   ├── MapboxDokkaExtension.kt
│                                   │   ├── MapboxJApiCmpExtension.kt
│                                   │   ├── MapboxJacocoExtension.kt
│                                   │   ├── MapboxLibraryExtension.kt
│                                   │   ├── MapboxPublishLibraryExtension.kt
│                                   │   └── MapboxRootExtension.kt
│                                   └── internal/
│                                       ├── Dependencies.kt
│                                       ├── GradleExt.kt
│                                       └── MapboxDependencies.kt
├── maps-sdk/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── maps-sdk.api
│   ├── build.gradle.kts
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               ├── BaseAnimationMapTest.kt
│       │   │               ├── CameraForCoordinatesTest.kt
│       │   │               ├── EmptyActivity.kt
│       │   │               ├── LegacyOfflineManagerTest.kt
│       │   │               ├── MapIntegrationTest.kt
│       │   │               ├── MapSnapshotterTest.kt
│       │   │               ├── MapboxMapIntegrationTest.kt
│       │   │               ├── RenderTest.kt
│       │   │               ├── StyleLoadTest.kt
│       │   │               ├── SymbolScaleBehaviorTest.kt
│       │   │               ├── TestUtils.kt
│       │   │               ├── ThreadCheckTest.kt
│       │   │               ├── ViewAnnotationTest.kt
│       │   │               └── renderer/
│       │   │                   └── egl/
│       │   │                       ├── EGLSupportTest.kt
│       │   │                       └── RendererSetupTest.kt
│       │   └── res/
│       │       ├── layout/
│       │       │   ├── view_annotation.xml
│       │       │   └── view_annotation_wrap_content.xml
│       │       └── values/
│       │           └── strings.xml
│       ├── main/
│       │   ├── assets/
│       │   │   └── sdk_versions/
│       │   │       └── com.mapbox.maps
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               ├── CameraAttributeParser.kt
│       │   │               ├── DelegatingMapClient.kt
│       │   │               ├── DelegatingViewAnnotation.kt
│       │   │               ├── FontUtils.kt
│       │   │               ├── MapAttributeParser.kt
│       │   │               ├── MapControllable.kt
│       │   │               ├── MapController.kt
│       │   │               ├── MapGeofencingConsentImpl.kt
│       │   │               ├── MapInitOptions.kt
│       │   │               ├── MapProvider.kt
│       │   │               ├── MapSurface.kt
│       │   │               ├── MapView.kt
│       │   │               ├── MapboxConfigurationException.kt
│       │   │               ├── MapboxConstants.kt
│       │   │               ├── MapboxMap.kt
│       │   │               ├── MapboxMapRecorder.kt
│       │   │               ├── MapboxMapsOptions.kt
│       │   │               ├── MapboxTracing.kt
│       │   │               ├── NativeMapImpl.kt
│       │   │               ├── NativeObserver.kt
│       │   │               ├── SnapshotOverlay.kt
│       │   │               ├── SnapshotOverlayCallback.kt
│       │   │               ├── SnapshotOverlayOptions.kt
│       │   │               ├── SnapshotResultCallback.kt
│       │   │               ├── SnapshotStyleListener.kt
│       │   │               ├── Snapshotter.kt
│       │   │               ├── SnapshotterDestroyedException.kt
│       │   │               ├── Style.kt
│       │   │               ├── StyleObserver.kt
│       │   │               ├── SymbolScaleBehavior.kt
│       │   │               ├── Utils.kt
│       │   │               ├── attribution/
│       │   │               │   ├── AttributionLayout.kt
│       │   │               │   ├── AttributionMeasure.kt
│       │   │               │   └── AttributionParser.kt
│       │   │               ├── coroutine/
│       │   │               │   ├── MapCameraManagerDelegateExt.kt
│       │   │               │   ├── MapFeatureQueryDelegateExt.kt
│       │   │               │   └── MapboxMapExt.kt
│       │   │               ├── debugoptions/
│       │   │               │   ├── CameraDebugView.kt
│       │   │               │   ├── DebugOptionsController.kt
│       │   │               │   ├── MapViewDebugOptions.kt
│       │   │               │   └── PaddingDebugView.kt
│       │   │               ├── plugin/
│       │   │               │   ├── InvalidViewPluginHostException.kt
│       │   │               │   ├── MapAttributionDelegateImpl.kt
│       │   │               │   ├── MapDelegateProviderImpl.kt
│       │   │               │   └── MapPluginRegistry.kt
│       │   │               ├── renderer/
│       │   │               │   ├── FpsManager.kt
│       │   │               │   ├── GLMapboxRenderThread.kt
│       │   │               │   ├── MapboxRenderThread.kt
│       │   │               │   ├── MapboxRenderer.kt
│       │   │               │   ├── MapboxSurfaceHolderRenderer.kt
│       │   │               │   ├── MapboxSurfaceRenderer.kt
│       │   │               │   ├── MapboxTextureViewRenderer.kt
│       │   │               │   ├── MapboxWidgetRenderer.kt
│       │   │               │   ├── OnFpsChangedListener.kt
│       │   │               │   ├── RenderEvent.kt
│       │   │               │   ├── RenderHandlerThread.kt
│       │   │               │   ├── RenderThread.kt
│       │   │               │   ├── RenderThreadStatsRecorder.kt
│       │   │               │   ├── RendererError.kt
│       │   │               │   ├── RendererSetupErrorListener.kt
│       │   │               │   ├── VulkanMapboxRenderThread.kt
│       │   │               │   ├── egl/
│       │   │               │   │   ├── EGLConfigChooser.kt
│       │   │               │   │   └── EGLCore.kt
│       │   │               │   ├── gl/
│       │   │               │   │   ├── GlUtils.kt
│       │   │               │   │   ├── PixelReader.kt
│       │   │               │   │   └── TextureRenderer.kt
│       │   │               │   └── widget/
│       │   │               │       ├── BitmapWidget.kt
│       │   │               │       ├── BitmapWidgetRenderer.kt
│       │   │               │       ├── Widget.kt
│       │   │               │       ├── WidgetPosition.kt
│       │   │               │       └── WidgetRenderer.kt
│       │   │               └── viewannotation/
│       │   │                   ├── OnViewAnnotationUpdatedListener.kt
│       │   │                   ├── ViewAnnotationManager.kt
│       │   │                   ├── ViewAnnotationManagerImpl.kt
│       │   │                   ├── ViewAnnotationOptionsKtx.kt
│       │   │                   ├── ViewAnnotationUpdateMode.kt
│       │   │                   └── ViewAnnotationVisibility.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   └── mapbox_rounded_corner.xml
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── colors.xml
│       │   │   │   ├── ids.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           ├── TestUtils.kt
│           │           └── maps/
│           │               ├── CameraAttributeParserTest.kt
│           │               ├── EqualsHashCodeTest.kt
│           │               ├── FontUtilsTest.kt
│           │               ├── MapAttributeParserTest.kt
│           │               ├── MapControllerTest.kt
│           │               ├── MapInitOptionsTest.kt
│           │               ├── MapSurfaceTest.kt
│           │               ├── MapViewTest.kt
│           │               ├── MapViewTypedArrayTest.kt
│           │               ├── MapboxMapExtTest.kt
│           │               ├── MapboxMapRecorderTest.kt
│           │               ├── MapboxMapTest.kt
│           │               ├── MapboxOptionsTest.kt
│           │               ├── NativeMapTest.kt
│           │               ├── NativeObserverTest.kt
│           │               ├── SafeSystemCallTest.kt
│           │               ├── ShadowCameraManager.java
│           │               ├── ShadowMap.java
│           │               ├── ShadowMapRecorder.java
│           │               ├── ShadowMapSnapshotter.java
│           │               ├── ShadowStyleManager.java
│           │               ├── ShadowTracing.kt
│           │               ├── SnapshotterTest.kt
│           │               ├── StyleObserverTest.kt
│           │               ├── StyleTest.kt
│           │               ├── ViewAnnotationManagerAddTest.kt
│           │               ├── ViewAnnotationManagerTest.kt
│           │               ├── ViewAnnotationManagerZOrderingTest.kt
│           │               ├── attribution/
│           │               │   ├── AttributionParseTest.java
│           │               │   └── MapAttributionDelegateImplTest.kt
│           │               ├── debugoptions/
│           │               │   └── DebugOptionsControllerTest.kt
│           │               ├── plugin/
│           │               │   ├── MapDelegateProviderTest.kt
│           │               │   └── MapPluginRegistryTest.kt
│           │               ├── renderer/
│           │               │   ├── Cleanup.kt
│           │               │   ├── EglConfigChooserTest.kt
│           │               │   ├── FpsManagerTest.kt
│           │               │   ├── GLMapboxRenderThreadTest.kt
│           │               │   ├── MapboxRendererTest.kt
│           │               │   ├── MapboxSurfaceHolderRendererTest.kt
│           │               │   ├── MapboxSurfaceRendererTest.kt
│           │               │   ├── MapboxTextureViewRendererTest.kt
│           │               │   ├── RenderHandlerThreadTest.kt
│           │               │   └── widget/
│           │               │       └── BitmapWidgetRendererTest.kt
│           │               └── shadows/
│           │                   ├── ShadowCancelable.java
│           │                   ├── ShadowCoordinateBounds.java
│           │                   ├── ShadowEventsService.kt
│           │                   ├── ShadowLogThrottler.kt
│           │                   ├── ShadowMapsResourceOptions.java
│           │                   ├── ShadowObservable.java
│           │                   └── ShadowTelemetryService.kt
│           └── resources/
│               └── robolectric.properties
├── metalava/
│   ├── README.md
│   ├── metalava.jar
│   ├── metalava.patch
│   └── update.sh
├── module-telemetry/
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── module-telemetry.api
│   ├── build.gradle.kts
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── module/
│       │                       └── telemetry/
│       │                           └── MapTelemetryEventsServiceTest.kt
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── module/
│       │                       └── telemetry/
│       │                           ├── MapBaseEvent.kt
│       │                           ├── MapEventFactory.kt
│       │                           ├── MapLoadEvent.kt
│       │                           ├── MapTelemetryImpl.kt
│       │                           ├── PerformanceEvent.kt
│       │                           └── PhoneState.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── module/
│                               └── telemetry/
│                                   ├── EqualsHashCodeTest.kt
│                                   ├── MapEventFactoryTest.kt
│                                   └── MapTelemetryTest.kt
├── plugin-animation/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-animation.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── animation/
│       │                           ├── CameraAnimationsExt.kt
│       │                           ├── CameraAnimationsPluginImpl.kt
│       │                           ├── CameraAnimatorsFactory.kt
│       │                           ├── CameraTransform.kt
│       │                           ├── HighLevelAnimatorSet.kt
│       │                           └── animator/
│       │                               ├── CameraAnchorAnimator.kt
│       │                               ├── CameraAnimator.kt
│       │                               ├── CameraBearingAnimator.kt
│       │                               ├── CameraCenterAnimator.kt
│       │                               ├── CameraPaddingAnimator.kt
│       │                               ├── CameraPitchAnimator.kt
│       │                               ├── CameraTypeEvaluator.kt
│       │                               ├── CameraZoomAnimator.kt
│       │                               └── Evaluators.kt
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── animation/
│           │                       ├── CameraAnimationsChangeListenersTest.kt
│           │                       ├── CameraAnimationsExtTest.kt
│           │                       ├── CameraAnimationsListenersTest.kt
│           │                       ├── CameraAnimationsPluginImplTest.kt
│           │                       ├── CameraAnimatorsFactoryTest.kt
│           │                       └── animator/
│           │                           ├── CameraAnimatorTest.kt
│           │                           └── EvaluatorsTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-annotation/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-annotation.api
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── annotation/
│       │                           ├── AnnotationExt.kt
│       │                           ├── AnnotationManagerImpl.kt
│       │                           ├── AnnotationPluginImpl.kt
│       │                           ├── ConvertUtils.kt
│       │                           ├── QueryAnnotationCallback.kt
│       │                           └── generated/
│       │                               ├── CircleAnnotation.kt
│       │                               ├── CircleAnnotationManager.kt
│       │                               ├── CircleAnnotationOptions.kt
│       │                               ├── OnCircleAnnotationClickListener.kt
│       │                               ├── OnCircleAnnotationDragListener.kt
│       │                               ├── OnCircleAnnotationInteractionListener.kt
│       │                               ├── OnCircleAnnotationLongClickListener.kt
│       │                               ├── OnPointAnnotationClickListener.kt
│       │                               ├── OnPointAnnotationDragListener.kt
│       │                               ├── OnPointAnnotationInteractionListener.kt
│       │                               ├── OnPointAnnotationLongClickListener.kt
│       │                               ├── OnPolygonAnnotationClickListener.kt
│       │                               ├── OnPolygonAnnotationDragListener.kt
│       │                               ├── OnPolygonAnnotationInteractionListener.kt
│       │                               ├── OnPolygonAnnotationLongClickListener.kt
│       │                               ├── OnPolylineAnnotationClickListener.kt
│       │                               ├── OnPolylineAnnotationDragListener.kt
│       │                               ├── OnPolylineAnnotationInteractionListener.kt
│       │                               ├── OnPolylineAnnotationLongClickListener.kt
│       │                               ├── PointAnnotation.kt
│       │                               ├── PointAnnotationManager.kt
│       │                               ├── PointAnnotationOptions.kt
│       │                               ├── PolygonAnnotation.kt
│       │                               ├── PolygonAnnotationManager.kt
│       │                               ├── PolygonAnnotationOptions.kt
│       │                               ├── PolylineAnnotation.kt
│       │                               ├── PolylineAnnotationManager.kt
│       │                               └── PolylineAnnotationOptions.kt
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── annotation/
│           │                       ├── AnnotationPluginImplTest.kt
│           │                       ├── ShadowProjection.java
│           │                       ├── StyleImageRefCountTest.kt
│           │                       └── generated/
│           │                           ├── CircleAnnotationManagerTest.kt
│           │                           ├── PointAnnotationManagerTest.kt
│           │                           ├── PolygonAnnotationManagerTest.kt
│           │                           └── PolylineAnnotationManagerTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-attribution/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-attribution.api
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── attribution/
│       │   │                       ├── AttributionDialogManagerImpl.kt
│       │   │                       ├── AttributionExt.kt
│       │   │                       ├── AttributionPluginImpl.kt
│       │   │                       ├── AttributionViewImpl.kt
│       │   │                       └── generated/
│       │   │                           └── AttributionAttributeParser.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   ├── mapbox_attribution_default.xml
│       │   │   │   ├── mapbox_attribution_selected.xml
│       │   │   │   └── mapbox_attribution_selector.xml
│       │   │   ├── layout/
│       │   │   │   └── mapbox_attribution_list_item.xml
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── colors.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── attribution/
│           │                       ├── AttributionDialogManagerImplTest.kt
│           │                       ├── AttributionPluginImplImplTest.kt
│           │                       ├── AttributionViewImplTest.kt
│           │                       └── generated/
│           │                           └── AttributionAttributeParserTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-compass/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-compass.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── compass/
│       │   │                       ├── CompassExt.kt
│       │   │                       ├── CompassViewImpl.kt
│       │   │                       ├── CompassViewPlugin.kt
│       │   │                       └── generated/
│       │   │                           └── CompassAttributeParser.kt
│       │   ├── res/
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── dimens.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── compass/
│                                   ├── CompassViewPluginTest.kt
│                                   └── generated/
│                                       └── CompassAttributeParserTest.kt
├── plugin-gestures/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-gestures.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── gestures/
│       │   │                       ├── GestureState.kt
│       │   │                       ├── GesturesConstants.kt
│       │   │                       ├── GesturesExt.kt
│       │   │                       ├── GesturesPluginImpl.kt
│       │   │                       ├── StandardGestureListenerShim.java
│       │   │                       └── generated/
│       │   │                           └── GesturesAttributeParser.kt
│       │   ├── res/
│       │   │   └── values/
│       │   │       ├── attrs.xml
│       │   │       ├── dimens.xml
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── gestures/
│           │                       ├── GestureOptionsTest.kt
│           │                       ├── GestureStateTest.kt
│           │                       ├── GesturesPluginTest.kt
│           │                       ├── StandardGestureListenerTest.java
│           │                       └── generated/
│           │                           └── GesturesAttributeParserTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-indoorselector/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-indoorselector.api
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── indoorselector/
│           │                       ├── IndoorSelectorExt.kt
│           │                       ├── IndoorSelectorPluginImpl.kt
│           │                       └── IndoorSelectorViewImpl.kt
│           └── res/
│               ├── drawable/
│               │   ├── mapbox_indoor_selector_arrow_down.xml
│               │   ├── mapbox_indoor_selector_arrow_up.xml
│               │   └── mapbox_indoor_selector_building.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   └── strings.xml
│               └── values-night/
│                   └── colors.xml
├── plugin-lifecycle/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-lifecycle.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── lifecycle/
│       │                           ├── LifecycleExt.kt
│       │                           ├── MapboxLifecyclePluginImpl.kt
│       │                           └── ViewLifecycleOwner.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── lifecycle/
│                                   ├── MapboxLifecyclePluginImplTest.kt
│                                   └── ViewLifecycleOwnerTest.kt
├── plugin-lifecycle-lint-rules/
│   ├── .gitignore
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── lint/
│       │   │                   └── lifecycle/
│       │   │                       ├── LifecycleIssueRegistry.kt
│       │   │                       └── LifecycleMethodDetector.kt
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               └── com.android.tools.lint.client.api.IssueRegistry
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── lint/
│                               └── LifecycleMethodDetectorTest.kt
├── plugin-locationcomponent/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-locationcomponent.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── locationcomponent/
│       │   │                       ├── DefaultLocationProvider.kt
│       │   │                       ├── LayerSourceProvider.kt
│       │   │                       ├── LocationCompassCalibrationListener.kt
│       │   │                       ├── LocationCompassEngine.kt
│       │   │                       ├── LocationComponentConstants.kt
│       │   │                       ├── LocationComponentExt.kt
│       │   │                       ├── LocationComponentPluginImpl.kt
│       │   │                       ├── LocationComponentPositionManager.kt
│       │   │                       ├── LocationIndicatorLayerRenderer.kt
│       │   │                       ├── LocationIndicatorLayerWrapper.kt
│       │   │                       ├── LocationLayerRenderer.kt
│       │   │                       ├── LocationLayerWrapper.kt
│       │   │                       ├── LocationPuckManager.kt
│       │   │                       ├── ModelLayerRenderer.kt
│       │   │                       ├── ModelLayerWrapper.kt
│       │   │                       ├── ModelSourceWrapper.kt
│       │   │                       ├── animators/
│       │   │                       │   ├── Evaluators.kt
│       │   │                       │   ├── PuckAccuracyRadiusAnimator.kt
│       │   │                       │   ├── PuckAnimator.kt
│       │   │                       │   ├── PuckAnimatorManager.kt
│       │   │                       │   ├── PuckBearingAnimator.kt
│       │   │                       │   ├── PuckPositionAnimator.kt
│       │   │                       │   └── PuckPulsingAnimator.kt
│       │   │                       ├── generated/
│       │   │                       │   └── LocationComponentAttributeParser.kt
│       │   │                       ├── model/
│       │   │                       │   └── AnimatableModel.kt
│       │   │                       └── utils/
│       │   │                           ├── BitmapUtils.kt
│       │   │                           └── ExpectedUtils.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   ├── mapbox_info_bg_selector.xml
│       │   │   │   ├── mapbox_info_icon_default.xml
│       │   │   │   ├── mapbox_info_icon_selected.xml
│       │   │   │   ├── mapbox_mylocation_bg_shape.xml
│       │   │   │   ├── mapbox_popup_window_transparent.xml
│       │   │   │   ├── mapbox_rounded_corner.xml
│       │   │   │   ├── mapbox_user_bearing_icon.xml
│       │   │   │   ├── mapbox_user_icon.xml
│       │   │   │   ├── mapbox_user_icon_shadow.xml
│       │   │   │   ├── mapbox_user_icon_stale.xml
│       │   │   │   ├── mapbox_user_puck_icon.xml
│       │   │   │   └── mapbox_user_stroke_icon.xml
│       │   │   └── values/
│       │   │       ├── attrs.xml
│       │   │       ├── colors.xml
│       │   │       └── dimens.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           ├── plugin/
│                           │   └── locationcomponent/
│                           │       ├── DefaultLocationProviderTest.kt
│                           │       ├── LayerSourceProviderTest.kt
│                           │       ├── LocationCompassEngineTest.kt
│                           │       ├── LocationComponentPluginImplTest.kt
│                           │       ├── LocationComponentPositionManagerTest.kt
│                           │       ├── LocationIndicatorLayerRendererTest.kt
│                           │       ├── LocationIndicatorLayerWrapperTest.kt
│                           │       ├── LocationLayerWrapperTest.kt
│                           │       ├── LocationPuckManagerTest.kt
│                           │       ├── ModelLayerRendererTest.kt
│                           │       ├── ModelLayerWrapperTest.kt
│                           │       ├── ModelSourceWrapperTest.kt
│                           │       ├── ShadowLocationServiceFactory.java
│                           │       ├── Utils.kt
│                           │       ├── animators/
│                           │       │   ├── EvaluatorsTest.kt
│                           │       │   ├── PuckAccuracyRadiusAnimatorTest.kt
│                           │       │   ├── PuckAnimatorManagerTest.kt
│                           │       │   ├── PuckBearingAnimatorTest.kt
│                           │       │   ├── PuckPositionAnimatorTest.kt
│                           │       │   └── PuckPulsingAnimatorTest.kt
│                           │       └── generated/
│                           │           └── LocationComponentAttributeParserTest.kt
│                           └── util/
│                               └── MockKExtensions.kt
├── plugin-logo/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-logo.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── logo/
│       │   │                       ├── LogoExt.kt
│       │   │                       ├── LogoViewImpl.kt
│       │   │                       ├── LogoViewPlugin.kt
│       │   │                       └── generated/
│       │   │                           └── LogoAttributeParser.kt
│       │   ├── res/
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── logo/
│                                   ├── LogoViewImplPluginTest.kt
│                                   └── generated/
│                                       └── LogoAttributeParserTest.kt
├── plugin-overlay/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-overlay.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── overlay/
│       │                           ├── MapOverlayExt.kt
│       │                           └── MapOverlayPluginImpl.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── overlay/
│                                   └── MapOverlayPluginTest.kt
├── plugin-scalebar/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-scalebar.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── scalebar/
│       │   │                       ├── LocaleUnitResolver.kt
│       │   │                       ├── ScaleBarConstant.kt
│       │   │                       ├── ScaleBarExt.kt
│       │   │                       ├── ScaleBarImpl.kt
│       │   │                       ├── ScaleBarPluginImpl.kt
│       │   │                       └── generated/
│       │   │                           └── ScaleBarAttributeParser.kt
│       │   ├── res/
│       │   │   └── values/
│       │   │       └── attrs.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── scalebar/
│                                   ├── ScaleBarImplTest.kt
│                                   ├── ScaleBarPluginTest.kt
│                                   ├── ShadowProjection.java
│                                   └── generated/
│                                       └── ScaleBarAttributeParserTest.kt
├── plugin-viewport/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-viewport.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── kotlin/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── viewport/
│       │                           ├── ViewportExt.kt
│       │                           ├── ViewportPluginImpl.kt
│       │                           ├── state/
│       │                           │   ├── FollowPuckViewportStateImpl.kt
│       │                           │   └── OverviewViewportStateImpl.kt
│       │                           ├── transition/
│       │                           │   ├── DefaultViewportTransitionImpl.kt
│       │                           │   ├── ImmediateViewportTransition.kt
│       │                           │   ├── MapboxViewportTransitionFactory.kt
│       │                           │   └── TransitionUtils.kt
│       │                           └── util/
│       │                               └── ViewportTelemetryEvents.kt
│       └── test/
│           └── kotlin/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── viewport/
│                                   ├── ViewportPluginImplTest.kt
│                                   ├── ViewportTestConstants.kt
│                                   ├── state/
│                                   │   ├── FollowPuckViewportStateImplTest.kt
│                                   │   └── OverviewViewportStateImplTest.kt
│                                   └── transition/
│                                       ├── DefaultViewportTransitionImplTest.kt
│                                       ├── ImmediateViewportTransitionImplTest.kt
│                                       ├── MapboxViewportTransitionFactoryTest.kt
│                                       └── TransitionUtilsTest.kt
├── scripts/
│   ├── check-permissions.py
│   ├── checksum-base.sh
│   ├── checksum.sh
│   ├── ci-circleci-start-pipeline.py
│   ├── ci-e2e-job-trigger-checker.sh
│   ├── ci-github-set-commit-status.py
│   ├── ci-weekly-trigger.py
│   ├── clean.sh
│   ├── install-pre-commit/
│   │   ├── install-pre-commit.sh
│   │   └── pre-commit.sh
│   ├── merge-gradle-dependency-output.py
│   ├── sanity-test/
│   │   ├── exclude-sanity-test-gen.json
│   │   ├── generate-sanity-test.js
│   │   └── template-sanity-test.ejs
│   ├── semver-check.sh
│   ├── start-internal-release-pipeline.py
│   ├── trigger-maps-documentation-deploy-steps.sh
│   └── update-android-docs.sh
├── sdk-base/
│   ├── .gitignore
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── sdk-base.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           ├── common/
│       │   │           │   └── MapboxMapsAndroidLogger.kt
│       │   │           └── maps/
│       │   │               ├── ClickInteraction.kt
│       │   │               ├── DragInteraction.kt
│       │   │               ├── ExtensionUtils.kt
│       │   │               ├── ImageHolder.kt
│       │   │               ├── LongClickInteraction.kt
│       │   │               ├── MapInteraction.java
│       │   │               ├── MapLoadingErrorDelegate.kt
│       │   │               ├── MapboxDelicateApi.kt
│       │   │               ├── MapboxExceptions.kt
│       │   │               ├── MapboxExperimental.kt
│       │   │               ├── MapboxLifecycleObserver.kt
│       │   │               ├── MapboxLogger.kt
│       │   │               ├── MapboxStyleManager.kt
│       │   │               ├── ThreadChecker.kt
│       │   │               ├── dsl/
│       │   │               │   └── CameraOptionsKtx.kt
│       │   │               ├── exception/
│       │   │               │   └── WorkerThreadException.kt
│       │   │               ├── extension/
│       │   │               │   ├── observable/
│       │   │               │   │   ├── EventsExtension.kt
│       │   │               │   │   ├── eventdata/
│       │   │               │   │   │   ├── CameraChangedEventData.kt
│       │   │               │   │   │   ├── MapIdleEventData.kt
│       │   │               │   │   │   ├── MapLoadedEventData.kt
│       │   │               │   │   │   ├── MapLoadingErrorEventData.kt
│       │   │               │   │   │   ├── RenderFrameFinishedEventData.kt
│       │   │               │   │   │   ├── RenderFrameStartedEventData.kt
│       │   │               │   │   │   ├── ResourceEventData.kt
│       │   │               │   │   │   ├── SourceAddedEventData.kt
│       │   │               │   │   │   ├── SourceDataLoadedEventData.kt
│       │   │               │   │   │   ├── SourceRemovedEventData.kt
│       │   │               │   │   │   ├── StyleDataLoadedEventData.kt
│       │   │               │   │   │   ├── StyleImageMissingEventData.kt
│       │   │               │   │   │   ├── StyleImageUnusedEventData.kt
│       │   │               │   │   │   └── StyleLoadedEventData.kt
│       │   │               │   │   └── model/
│       │   │               │   │       ├── DataSourceType.kt
│       │   │               │   │       ├── Error.kt
│       │   │               │   │       ├── MapLoadErrorType.kt
│       │   │               │   │       ├── RenderMode.kt
│       │   │               │   │       ├── Request.kt
│       │   │               │   │       ├── RequestPriority.kt
│       │   │               │   │       ├── RequestType.kt
│       │   │               │   │       ├── Response.kt
│       │   │               │   │       ├── ResponseErrorReason.kt
│       │   │               │   │       ├── ResponseSourceType.kt
│       │   │               │   │       ├── SourceDataType.kt
│       │   │               │   │       ├── StyleDataType.kt
│       │   │               │   │       └── TileID.kt
│       │   │               │   └── style/
│       │   │               │       └── StyleContract.kt
│       │   │               ├── geofencing/
│       │   │               │   └── MapGeofencingConsent.kt
│       │   │               ├── interactions/
│       │   │               │   ├── FeatureState.kt
│       │   │               │   ├── FeatureStateCallback.kt
│       │   │               │   ├── FeatureStateKey.kt
│       │   │               │   ├── FeaturesetFeature.kt
│       │   │               │   ├── QueryRenderedFeaturesetFeaturesCallback.kt
│       │   │               │   ├── TypedFeaturesetDescriptor.kt
│       │   │               │   └── standard/
│       │   │               │       └── generated/
│       │   │               │           ├── StandardBuildings.kt
│       │   │               │           ├── StandardBuildingsFeature.kt
│       │   │               │           ├── StandardBuildingsState.kt
│       │   │               │           ├── StandardBuildingsStateKey.kt
│       │   │               │           ├── StandardInteractionsExt.kt
│       │   │               │           ├── StandardLandmarkIcons.kt
│       │   │               │           ├── StandardLandmarkIconsFeature.kt
│       │   │               │           ├── StandardLandmarkIconsState.kt
│       │   │               │           ├── StandardLandmarkIconsStateKey.kt
│       │   │               │           ├── StandardPlaceLabels.kt
│       │   │               │           ├── StandardPlaceLabelsFeature.kt
│       │   │               │           ├── StandardPlaceLabelsState.kt
│       │   │               │           ├── StandardPlaceLabelsStateKey.kt
│       │   │               │           ├── StandardPoi.kt
│       │   │               │           ├── StandardPoiFeature.kt
│       │   │               │           ├── StandardPoiState.kt
│       │   │               │           └── StandardPoiStateKey.kt
│       │   │               ├── module/
│       │   │               │   ├── MapTelemetry.java
│       │   │               │   └── TelemetryEvent.kt
│       │   │               ├── plugin/
│       │   │               │   ├── ConfigProperties.kt
│       │   │               │   ├── ContextBinder.kt
│       │   │               │   ├── InvalidPluginConfigurationException.kt
│       │   │               │   ├── LifecyclePlugin.kt
│       │   │               │   ├── MapCameraPlugin.kt
│       │   │               │   ├── MapPlugin.kt
│       │   │               │   ├── MapSizePlugin.kt
│       │   │               │   ├── MapStyleObserverPlugin.kt
│       │   │               │   ├── Plugin.kt
│       │   │               │   ├── ViewPlugin.kt
│       │   │               │   ├── animation/
│       │   │               │   │   ├── CameraAnimationsLifecycleListener.kt
│       │   │               │   │   ├── CameraAnimationsPlugin.kt
│       │   │               │   │   ├── CameraAnimatorChangeListener.kt
│       │   │               │   │   ├── CameraAnimatorNullableChangeListener.kt
│       │   │               │   │   ├── CameraAnimatorOptions.kt
│       │   │               │   │   ├── CameraAnimatorType.kt
│       │   │               │   │   ├── MapAnimationOptions.kt
│       │   │               │   │   └── MapAnimationOwnerRegistry.kt
│       │   │               │   ├── annotation/
│       │   │               │   │   ├── Annotation.kt
│       │   │               │   │   ├── AnnotationConfig.kt
│       │   │               │   │   ├── AnnotationManager.kt
│       │   │               │   │   ├── AnnotationOptions.kt
│       │   │               │   │   ├── AnnotationPlugin.kt
│       │   │               │   │   ├── AnnotationSourceOptions.kt
│       │   │               │   │   ├── AnnotationType.kt
│       │   │               │   │   ├── ClusterAnnotationManager.kt
│       │   │               │   │   ├── ClusterFeature.kt
│       │   │               │   │   ├── ClusterOptions.kt
│       │   │               │   │   ├── OnAnnotationClickListener.kt
│       │   │               │   │   ├── OnAnnotationDragListener.kt
│       │   │               │   │   ├── OnAnnotationInteractionListener.kt
│       │   │               │   │   ├── OnAnnotationLongClickListener.kt
│       │   │               │   │   ├── OnClusterClickListener.kt
│       │   │               │   │   └── OnClusterLongClickListener.kt
│       │   │               │   ├── attribution/
│       │   │               │   │   ├── Attribution.kt
│       │   │               │   │   ├── AttributionDialogManager.kt
│       │   │               │   │   ├── AttributionParserConfig.kt
│       │   │               │   │   ├── AttributionPlugin.kt
│       │   │               │   │   ├── AttributionView.kt
│       │   │               │   │   ├── OnAttributionClickListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── AttributionSettingsBase.kt
│       │   │               │   │       ├── AttributionSettingsData.kt
│       │   │               │   │       └── AttributionSettingsInterface.kt
│       │   │               │   ├── compass/
│       │   │               │   │   ├── CompassPlugin.kt
│       │   │               │   │   ├── CompassView.kt
│       │   │               │   │   ├── OnCompassClickListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── CompassSettingsBase.kt
│       │   │               │   │       ├── CompassSettingsData.kt
│       │   │               │   │       └── CompassSettingsInterface.kt
│       │   │               │   ├── delegates/
│       │   │               │   │   ├── MapAttributionDelegate.kt
│       │   │               │   │   ├── MapCameraManagerDelegate.kt
│       │   │               │   │   ├── MapDelegateProvider.kt
│       │   │               │   │   ├── MapFeatureQueryDelegate.kt
│       │   │               │   │   ├── MapFeatureStateDelegate.kt
│       │   │               │   │   ├── MapInteractionDelegate.kt
│       │   │               │   │   ├── MapListenerDelegate.kt
│       │   │               │   │   ├── MapPluginExtensionsDelegate.kt
│       │   │               │   │   ├── MapPluginProviderDelegate.kt
│       │   │               │   │   ├── MapProjectionDelegate.kt
│       │   │               │   │   ├── MapTransformDelegate.kt
│       │   │               │   │   └── listeners/
│       │   │               │   │       ├── OnCameraChangeListener.kt
│       │   │               │   │       ├── OnMapIdleListener.kt
│       │   │               │   │       ├── OnMapLoadErrorListener.kt
│       │   │               │   │       ├── OnMapLoadedListener.kt
│       │   │               │   │       ├── OnRenderFrameFinishedListener.kt
│       │   │               │   │       ├── OnRenderFrameStartedListener.kt
│       │   │               │   │       ├── OnSourceAddedListener.kt
│       │   │               │   │       ├── OnSourceDataLoadedListener.kt
│       │   │               │   │       ├── OnSourceRemovedListener.kt
│       │   │               │   │       ├── OnStyleDataLoadedListener.kt
│       │   │               │   │       ├── OnStyleImageMissingListener.kt
│       │   │               │   │       ├── OnStyleImageUnusedListener.kt
│       │   │               │   │       └── OnStyleLoadedListener.kt
│       │   │               │   ├── gestures/
│       │   │               │   │   ├── GesturesListeners.kt
│       │   │               │   │   ├── GesturesPlugin.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── GesturesSettingsBase.kt
│       │   │               │   │       ├── GesturesSettingsData.kt
│       │   │               │   │       └── GesturesSettingsInterface.kt
│       │   │               │   ├── indoorselector/
│       │   │               │   │   ├── IndoorSelectorPlugin.kt
│       │   │               │   │   ├── IndoorSelectorView.kt
│       │   │               │   │   ├── OnFloorSelectedListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── IndoorSelectorSettingsBase.kt
│       │   │               │   │       ├── IndoorSelectorSettingsData.kt
│       │   │               │   │       └── IndoorSelectorSettingsInterface.kt
│       │   │               │   ├── lifecycle/
│       │   │               │   │   └── MapboxLifecyclePlugin.kt
│       │   │               │   ├── locationcomponent/
│       │   │               │   │   ├── LocationComponentPlugin.kt
│       │   │               │   │   ├── LocationConsumer.kt
│       │   │               │   │   ├── LocationProvider.kt
│       │   │               │   │   ├── OnIndicatorAccuracyRadiusChangedListener.kt
│       │   │               │   │   ├── OnIndicatorBearingChangedListener.kt
│       │   │               │   │   ├── OnIndicatorPositionChangedListener.kt
│       │   │               │   │   ├── PuckLocatedAtPointListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── LocationComponentSettingsBase.kt
│       │   │               │   │       ├── LocationComponentSettingsData.kt
│       │   │               │   │       └── LocationComponentSettingsInterface.kt
│       │   │               │   ├── logo/
│       │   │               │   │   ├── LogoPlugin.kt
│       │   │               │   │   ├── LogoView.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── LogoSettingsBase.kt
│       │   │               │   │       ├── LogoSettingsData.kt
│       │   │               │   │       └── LogoSettingsInterface.kt
│       │   │               │   ├── overlay/
│       │   │               │   │   ├── MapOverlayCoordinatesProvider.kt
│       │   │               │   │   ├── MapOverlayPlugin.kt
│       │   │               │   │   └── OnReframeFinished.kt
│       │   │               │   ├── scalebar/
│       │   │               │   │   ├── ScaleBar.kt
│       │   │               │   │   ├── ScaleBarPlugin.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── ScaleBarSettingsBase.kt
│       │   │               │   │       ├── ScaleBarSettingsData.kt
│       │   │               │   │       └── ScaleBarSettingsInterface.kt
│       │   │               │   └── viewport/
│       │   │               │       ├── CompletionListener.kt
│       │   │               │       ├── ViewportConstants.kt
│       │   │               │       ├── ViewportPlugin.kt
│       │   │               │       ├── ViewportStatus.kt
│       │   │               │       ├── ViewportStatusObserver.kt
│       │   │               │       ├── data/
│       │   │               │       │   ├── DefaultViewportTransitionOptions.kt
│       │   │               │       │   ├── FollowPuckViewportStateBearing.kt
│       │   │               │       │   ├── FollowPuckViewportStateOptions.kt
│       │   │               │       │   ├── OverviewViewportStateOptions.kt
│       │   │               │       │   ├── ViewportOptions.kt
│       │   │               │       │   └── ViewportStatusChangeReason.kt
│       │   │               │       ├── state/
│       │   │               │       │   ├── FollowPuckViewportState.kt
│       │   │               │       │   ├── OverviewViewportState.kt
│       │   │               │       │   ├── ViewportState.kt
│       │   │               │       │   └── ViewportStateDataObserver.kt
│       │   │               │       └── transition/
│       │   │               │           ├── DefaultViewportTransition.kt
│       │   │               │           └── ViewportTransition.kt
│       │   │               ├── threading/
│       │   │               │   └── AnimationThreadController.kt
│       │   │               └── util/
│       │   │                   ├── CameraOptionsUtils.kt
│       │   │                   ├── CoreGesturesHandler.kt
│       │   │                   └── MathUtils.kt
│       │   ├── ksp/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   ├── attribution/
│       │   │                   │   └── generated/
│       │   │                   │       └── AttributionSettings.kt
│       │   │                   ├── compass/
│       │   │                   │   └── generated/
│       │   │                   │       └── CompassSettings.kt
│       │   │                   ├── gestures/
│       │   │                   │   └── generated/
│       │   │                   │       └── GesturesSettings.kt
│       │   │                   ├── indoorselector/
│       │   │                   │   └── generated/
│       │   │                   │       └── IndoorSelectorSettings.kt
│       │   │                   ├── locationcomponent/
│       │   │                   │   └── generated/
│       │   │                   │       └── LocationComponentSettings.kt
│       │   │                   ├── logo/
│       │   │                   │   └── generated/
│       │   │                   │       └── LogoSettings.kt
│       │   │                   └── scalebar/
│       │   │                       └── generated/
│       │   │                           └── ScaleBarSettings.kt
│       │   └── res/
│       │       └── values/
│       │           └── strings.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           ├── EqualsHashCodeTest.kt
│                           ├── dsl/
│                           │   └── CameraOptionsKtxTest.kt
│                           ├── plugin/
│                           │   └── scalebar/
│                           │       └── ScaleBarSettingsUnitsTest.kt
│                           └── util/
│                               └── MathUtilsTest.kt
└── settings.gradle.kts

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
[*.{kt,kts}]
indent_size=2
insert_final_newline=false
ktlint_standard_no-wildcard-imports=disabled
ktlint_standard_trailing-comma-on-call-site=disabled
ktlint_standard_trailing-comma-on-declaration-site=disabled
ktlint_standard_annotation=disabled
ktlint_standard_multiline-if-else=disabled
ktlint_standard_argument-list-wrapping=disabled
ktlint_standard_spacing-between-declarations-with-annotations=disabled
ktlint_standard_spacing-between-declarations-with-comments=disabled
ktlint_standard_no-empty-first-line-in-method-block=disabled
ktlint_standard_argument-list-wrapping=disabled
ktlint_standard_indent=disabled

================================================
FILE: .gitattributes
================================================
# Merge strategies
app/src/main/AndroidManifest.xml merge=union
app/src/main/res/values/example_categories.xml merge=union
app/src/main/res/values/example_descriptions.xml merge=union
app/src/main/res/values/example_titles.xml merge=union
CHANGELOG.md merge=union

# Mark files as generated in Github PRs
**/generated/* linguist-generated=true


================================================
FILE: .github/CODEOWNERS
================================================
* @mapbox/maps-android
*.api @mapbox/maps-android @mapbox/maps-ios

================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: Feature Request
about: To request a new feature, please provide detail on the outcome desired, solutions attempted and any suggested approaches.
title: ''
labels: 'feature :green apple:'
assignees: ''

---

## New Feature

<- Description of the feature being requested and any outcomes desired, an example use case, and any suggestions for solution ->

## Why
<- 1-2 sentence description of why you're requesting this feature. What problem does it solve? Why is it valuable? ->



================================================
FILE: .github/ISSUE_TEMPLATE/issue_template.md
================================================
---
name: Bug
about: This template should be used for reporting bugs and defects.
labels: 'bug :beetle:'
assignees: ''
---

## Environment

- Android OS version:
- Devices affected:
- Maps SDK Version:

## Observed behavior and steps to reproduce

<!--- Please include as much evidence as possible (traces, videos, screenshots etc) --->

## Expected behavior

<!--- Please include the expected behavior and any resources supporting this expected behavior. --->

## Notes / preliminary analysis

<!--- include your initial analysis, if available --->

## Additional links and references

<!--- Links to traces, videos etc --->


================================================
FILE: .github/pull_request_template.md
================================================
<!--
Thanks for submitting a pull request!
Please fill out the sections below to complete your submission.
We appreciate your contributions!
-->

### Summary of changes

<!--
• If this is a new feature, include a short summary on how to use it.
• If this is a bug fix, explain how your contribution resolves the problem.
• Include a screenshot or gif if applicable
-->

### User impact (optional)

<!--
If this PR introduces user-facing changes, please note them here.
-->


## Pull request checklist:
 - [ ] Briefly describe the changes in this PR.
 - [ ] Include before/after visuals or gifs if this PR includes visual changes.
    <!--
        | Before | After |
        | ----- | ----- |
        | <img src="" width = 250/> | <img src="" width = 250/> |
        or
        | <video src="" width = 250/> | <video src="" width = 250/> |
    -->
 - [ ] Write tests for all new functionality. If tests were not written, please explain why.
 - [ ] Optimize code for java consumption (`@JvmOverloads`, `@file:JvmName`, etc).
 - [ ] Add example if relevant.
 - [ ] Document any changes to public APIs.
 - [ ] Run `make update-api` to update generated api files, if there's public API changes, otherwise the `verify-api-*` CI steps might fail.
 - [ ] Update [CHANGELOG.md](../CHANGELOG.md) or use the label 'skip changelog', otherwise `check changelog` CI step will fail.
 - [ ] If this PR is a `v10.[version]` release branch fix / enhancement, merge it to `main` firstly and then port to `v10.[version]` release branch.

Fixes: < Link to related issues that will be fixed by this pull request, if they exist >

PRs must be submitted under the terms of our Contributor License Agreement [CLA](https://github.com/mapbox/mapbox-maps-android/blob/main/CONTRIBUTING.md#contributor-license-agreement).


================================================
FILE: .github/stale.yml
================================================
# Configuration for probot-stale - https://github.com/probot/stale

exemptProjects: true
exemptMilestones: true

staleLabel: archived

limitPerRun: 1

# SEMVER-MAJOR - @tobrun
exemptLabels:
  - SEMVER-MAJOR

pulls:
  daysUntilStale: 60
  daysUntilClose: 7
  markComment: false
  closeComment: >
    This pull request has been automatically detected as stale because it has not had
    recent activity and will be archived. Thank you for your contributions.

issues:
  daysUntilStale: 180
  daysUntilClose: -1
  markComment: false
  closeComment: >
    This issue has been automatically detected as stale because it has not had
    recent activity and will be archived. Thank you for your contributions.


================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [ "main", v*.* ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ "main" ]
  schedule:
    - cron: '24 7 * * 6'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    environment: env
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'java', 'python' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
        # Use only 'java' to analyze code written in Java, Kotlin or both
        # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
        # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.

        # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
        # queries: security-extended,security-and-quality


    # Autobuild attempts to build any compiled languages  (C/C++, C#, Go, or Java).
    # If this step fails, then you should remove it and run the build manually (see below)
    - name: Autobuild
      uses: github/codeql-action/autobuild@v2
      env:
          SDK_REGISTRY_TOKEN: ${{ secrets.SDK_REGISTRY_TOKEN}}

    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun

    #   If the Autobuild fails above, remove it and uncomment the following three lines.
    #   modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.

    # - run: |
    #   echo "Run, Build Application using script"
    #   ./location_of_script_within_repo/buildscript.sh

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .gitignore
================================================
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/captures
.externalNativeBuild
.cxx
**/build
/.idea
app/src/main/res/values/developer-config.xml
app/src/androidTest/java/com/mapbox/maps/testapp/activity
**/developer-config.xml
node_modules/
gh_token.txt
android-docs-repo
examples.zip
release-docs/
release-docs.zip
/tmp/checksum.txt
api_compat_report/
logs/


================================================
FILE: CHANGELOG.md
================================================
# Changelog for Mapbox Maps SDK for Android

Mapbox welcomes participation and contributions from everyone.

> **16 KB Page Size Support:** Starting with version 11.7.0 and 10.19.0, **NDK 27 is supported** with dedicated artifacts that include [support for 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes). If your app does not require 16 KB page size support, you can keep using our default artifacts without `-ndk27` suffix. For more information about our NDK support, see https://docs.mapbox.com/android/maps/guides/#ndk-support

# main

# 11.22.0-rc.1 April 08, 2026
## Features ✨ and improvements 🏁
* Expose `height` and `minHeight` properties on `StandardBuildingsFeature`.
* Deprecate `PointAnnotation.iconImage` getter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly via `PointAnnotationOptions.withIconImage(String)`. In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed.
* Internal fixes and performance improvements.

## Bug fixes 🐞
* Fix native memory leak in `AnnotationManager` where bitmap style images were not removed when annotations were deleted.
* Fix feature ID format mismatch in JNI marshaling where whole-number `double` feature IDs (e.g. `12345.0`) were incorrectly serialized as `"12345.000000"` instead of `"12345"`, causing `setFeatureState` to fail when using IDs obtained from `queryRenderedFeatures`.
* [compose] Fix `MapboxMap` crash (`place is called on a deactivated node`) when used inside a `LazyColumn`.
  * [compose] **Known limitation:** on Compose Foundation 1.7+ a secondary crash (`Apply is called on deactivated node`) may still occur when `MapboxMap` is used inside a `LazyColumn` during fast scrolling/item reuse because of `LazyColumn` prefetch behavior. Workaround: pass a no-op `LazyListPrefetchStrategy` to `rememberLazyListState()`; see `LazyColumnMapActivity` for an example.
* Fix location indicator cutout appearing in the wrong position on devices with high pixel density.
* Fix lines with sub-pixel width being rendered thicker than intended.
* Fix tile data decompression by properly tracking compression state in tile storage.
* Fix potential ANR caused by a deadlock in lifecycle management.
* Fix tile store cleanup task incorrectly deleting in-progress downloads.
* Fix tiles failing to load on some Android devices when the server response is incomplete.

## Dependencies
* Update gl-native to [v11.22.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.22.0-rc.1), common to [v24.22.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.22.0-rc.1).


# 11.21.0 April 02, 2026
## Dependencies
* Update gl-native to [v11.21.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.21.0), common to [v24.21.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.21.0).


# 11.21.0-rc.1 March 23, 2026

## Bug fixes 🐞
* Fix intermittent rendering artifacts (reversed/large bitmaps) on Android Auto caused by stale texture ID reuse in `BitmapWidgetRenderer` after surface recreation.
* Fix native memory leak in `AnnotationManager` where bitmap style images were not removed onDestroy.
* Fix feature cutout rendering artifacts on some devices caused by insufficient shader precision.
* Fix rendering of stacked underground 3D roads.
* Fix a crash that could occur when the map is destroyed during style loading.
* Fix underground road geometry being clipped in orthographic projection with small viewports.
* Fix map flickering caused by stencil buffer conflicts between raster and hillshade layers.
* Fix potential ANRs when receiving location updates under heavy system load.
* Fix a bug in eviction logic for TileStore.
* Internal fixes and performance improvements.

## Dependencies
* Update gl-native to [v11.21.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.21.0-rc.1), common to [v24.21.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.21.0-rc.1).

# 11.20.1 March 17, 2026
## Bug fixes 🐞
* Internal fixes and performance improvements.

## Dependencies
* Update gl-native to [v11.20.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.1), common to [v24.20.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.1).


# 11.20.0 March 13, 2026

## Features ✨ and improvements 🏁
* [compose] Add declarative animation API to experimental `Marker` composable with two animation triggers: `appearAnimation` and `disappearAnimation`. Each trigger accepts a list of `MarkerAnimationEffect` including `wiggle` (pendulum rotation), `scale`, `fadeIn`, and `fadeOut`. Effects can be customized with parameters (e.g., `scale(from = 0.5f, to = 1.5f)`, `fade(from = 0.5f, to = 1.0f)`) and combined for rich animations. See `MarkersActivity` example for usage.
* Improve FPS statistics logging when `mapView.setOnFpsChangedListener()` is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.

## Bug fixes 🐞
* Fix NPE crash in `PointAnnotationClusterActivity` example when the remote GeoJSON endpoint returns a non-successful HTTP response.
* Fix `MapSurface.setMaximumFps` not working correctly on secondary displays (e.g. Android Auto). Use `Context.getDisplay()` on API 30+ to get the actual display refresh rate instead of always using the primary display's rate.
* Fix `PointAnnotationManager.iconImageBitmap` setter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible.
* Fix intermittent rendering artifacts (reversed/large bitmaps) on Android Auto caused by stale texture ID reuse in `BitmapWidgetRenderer` after surface recreation.
* Fix feature cutout artifacts at route overlaps.
* Fix a data race condition for `FillExtrusion` layer.
* Fix several issues related to runtime symbol appearances switches.
* Fix disappearing icons after reducing memory use.
* Fix landmark POI image loads causes relayout for unrelated layers.
* Fix tilestore eviction logic to not block tilestore thread completely.
* Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.

## Dependencies
* Update gl-native to [v11.20.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.0), common to [v24.20.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.0).


# 11.20.0-rc.1 March 03, 2026

## Features ✨ and improvements 🏁
* [compose] Add declarative animation API to experimental `Marker` composable with two animation triggers: `appearAnimation` and `disappearAnimation`. Each trigger accepts a list of `MarkerAnimationEffect` including `wiggle` (pendulum rotation), `scale`, `fadeIn`, and `fadeOut`. Effects can be customized with parameters (e.g., `scale(from = 0.5f, to = 1.5f)`, `fade(from = 0.5f, to = 1.0f)`) and combined for rich animations. See `MarkersActivity` example for usage.
* Improve FPS statistics logging when `mapView.setOnFpsChangedListener()` is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.

## Bug fixes 🐞
* Fix `MapSurface.setMaximumFps` not working correctly on secondary displays (e.g. Android Auto). Use `Context.getDisplay()` on API 30+ to get the actual display refresh rate instead of always using the primary display's rate.
* Fix `PointAnnotationManager.iconImageBitmap` setter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible.
* Fix feature cutout artifacts at route overlaps.
* Fix a data race condition for `FillExtrusion` layer.
* Fix several issues related to runtime symbol appearances switches.
* Fix disappearing icons after reducing memory use.
* Fix landmark POI image loads causes relayout for unrelated layers.
* Fix tilestore eviction logic to not block tilestore thread completely.
* Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.

## Dependencies
* Update gl-native to [v11.20.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.0-rc.1), common to [v24.20.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.20.0-rc.1).


# 11.19.1 March 10, 2026
## Bug fixes 🐞
* Internal fixes and performance improvements.

## Dependencies
* Update gl-native to [v11.19.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.1), common to [v24.19.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.1).


# 11.19.0 February 24, 2026

## Features ✨ and improvements 🏁
* Introduce new `AnnotationConfig#slotName` property to allow to specify a slot to position annotation layer.
* Introduce experimental `queryRenderedRasterValues` API for querying the rendered raster values on the map at a specific screen coordinate.
* Deprecate `Tilestore.create(path: String)` instead use `TileStore.setRootPath()`.
* Improve data serialization speed when using `LineString` or `MultiPoint` in `GeoJsonSource`.
* Introduce new `LineLayer.lineElevationGroundScale` property to scale elevated lines with terrain exaggeration.
* Promote elevated lines properties to stable: `LineLayer.lineZOffset` and `LineLayer.lineElevationReference`.
* Introduce experimental `SymbolScaleBehavior` API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set `MapboxMap.symbolScaleBehavior` property to configure: `SymbolScaleBehavior.system` (automatic scaling), `SymbolScaleBehavior.system(mapping)` (custom mapping function), or `SymbolScaleBehavior.fixed(scaleFactor)` (fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale.
* General fixes and performance improvements.

## Bug fixes 🐞
* Fix rare scenario where map render surface size was wrong.
* Respect `animationDurationMs` when custom `OverviewViewportStateOptions.animationDurationMs` is set.
* Fix point View Annotation flickering and hiding on moving anchor out of screen.
* Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
* Fix elevated line bevel join artifacts at sharp corners.
* [compose] Improved reliability of attribution list updates on source change.
* Fix duplicate name detection bug in symbol appearance conversion.
* Fix a crash when using feature dependent appearances with images and default appearance image is empty.

## Dependencies
* Update gl-native to [v11.19.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0), common to [v24.19.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0).

# 11.19.0-rc.1 February 12, 2026

## Features ✨ and improvements 🏁
* Improve data serialization speed when using `LineString` or `MultiPoint` in `GeoJsonSource`.
* Introduce new `LineLayer.lineElevationGroundScale` property to scale elevated lines with terrain exaggeration.
* Promote elevated lines properties to stable: `LineLayer.lineZOffset` and `LineLayer.lineElevationReference`.
* Introduce experimental `SymbolScaleBehavior` API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set `MapboxMap.symbolScaleBehavior` property to configure: `SymbolScaleBehavior.system` (automatic scaling), `SymbolScaleBehavior.system(mapping)` (custom mapping function), or `SymbolScaleBehavior.fixed(scaleFactor)` (fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale.
* General fixes and performance improvements.

## Bug fixes 🐞
* Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
* Fix elevated line bevel join artifacts at sharp corners.
* [compose] Improved reliability of attribution list updates on source change.

## Dependencies
* Update gl-native to [v11.19.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0-rc.1), common to [v24.19.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0-rc.1).


# 11.18.2 February 09, 2026

## Bug fixes 🐞
* Fix disappearing icons after reducing memory use.
* Fix Point View Annotation flickering and hiding on moving anchor out of screen

## Dependencies
* Update gl-native to [v11.18.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.2), common to [v24.18.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.2).


# 11.18.1 January 29, 2026
## Dependencies
* Update gl-native to [v11.18.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.1), common to [v24.18.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.1).

## Features ✨ and improvements 🏁
* Add `ModelSource` support with `ModelSourceModel`, `ModelMaterialOverride`, and `ModelNodeOverride` to enable interactive 3D models. Material overrides allow customization of color, emissive strength, opacity, and color mix intensity. Node overrides enable control of model part transformations such as rotating doors, landing gear, or propellers. Models can be updated via source-driven approach (modifying `ModelSource.models` directly) or feature-state driven approach (using expressions with feature state for dynamic control). For implementation examples, see `Interactive3DModelFeatureStateActivity` (Compose), `Interactive3DModelSourceActivity` (View), and `Animated3DModelActivity` (Compose).

# 11.19.0-beta.1 January 28, 2026

## Features ✨ and improvements 🏁
* Introduce experimental `queryRenderedRasterValues` API for querying the rendered raster array value at a point on the map.
* Introduce new `AnnotationConfig#slotName` property to allow to specify a slot to position annotation layer.
* Introduce experimental `queryRenderedRasterValues` API for querying the rendered raster values on the map at a specific screen coordinate.
* Introduce `StyleAttributionsChanged` event for detecting map attributions changes
* Deprecate `Tilestore.create(path: String)` instead use `TileStore.setRootPath()`.

## Bug fixes 🐞
* Fix rare scenario where map render surface size was wrong.
* Respect `animationDurationMs` when custom `OverviewViewportStateOptions.animationDurationMs` is set.
* Fix point View Annotation flickering and hiding on moving anchor out of screen.

## Dependencies
* Update gl-native to [v11.19.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0-beta.1), common to [v24.19.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.19.0-beta.1).

## Features ✨ and improvements 🏁
* Rename `IndoorManager.setOnIndoorUpdatedCallback` to `IndoorManager.subscribeOnIndoorUpdated` with returned Cancelable support. Add flow-based `val onIndoorUpdated: Flow<IndoorState>` API.

# 11.18.0 January 15, 2026

## Breaking changes ⚠️
* Remove line-cutout-width and change line-cutout-opacity default to 1.0

## Features ✨ and improvements 🏁
* Add `ModelLayer.modelAllowDensityReduction` property to disable density reduction in model layers.
* Add Standard Style color and 3D configuration options: `colorBuildings`, `colorCommercial`, `colorEducation`, `colorIndustrial`, `colorLand`, `colorMedical`, `show3dBuildings`, `show3dFacades`, `show3dLandmarks`, and `show3dTrees`.
* Introduce experimental `AttributionControl` composable function that exposes `AttributionState` programmatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with [Mapbox ToS](https://www.mapbox.com/legal/tos) requirements.
* Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to `MapInitOptions.plugins`. It requires a style with indoor data and special access to indoor mapping features. To request more information, please use this [form](https://www.mapbox.com/forms/indoor-airport-maps).
* Add experimental `shadowDrawBeforeLayer` property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.
* [tile_store] Add `TileStore.setRootPath()` method to set tilestore path to be used by default.
* Faster polygon triangulation for complex polygons.
* Improved handling of occluded symbols with `text-occlusion-opacity` and `icon-occlusion-opacity` properties.
* General fixes and performance improvements.

## Bug fixes 🐞
* Fix `userData` payload for `onSourceDataLoaded` event during GeoJSON partial update.
* Fix guard rail placement.
* Fix changes in brightness not always getting applied.
* Fix leaking Vertex Array Objects.
* Reset style fog, snow and rain impl when switching to a new style.
* Fix rendering artefacts when persistent buffer mapping is enabled.
* Fix Coercion expression possibleOutputs result for Array type.
* Fix a crash when jumping between different projections.
* Fixes for placements with `icon-optional`, `text-optional`, and missing parts.

## Dependencies
* Update gl-native to [v11.18.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.0), common to [v24.18.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.0).


# 11.18.0-beta.1 December 17, 2025

## Breaking changes ⚠️
* Remove line-cutout-width and change line-cutout-opacity default to 1.0

## Features ✨ and improvements 🏁
* Add `ModelLayer.modelAllowDensityReduction` property to disable density reduction in model layers.
* Add Standard Style color and 3D configuration options: `colorBuildings`, `colorCommercial`, `colorEducation`, `colorIndustrial`, `colorLand`, `colorMedical`, `show3dBuildings`, `show3dFacades`, `show3dLandmarks`, and `show3dTrees`.
* Introduce experimental `AttributionControl` composable function that exposes `AttributionState` programmatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with [Mapbox ToS](https://www.mapbox.com/legal/tos) requirements.
* Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to `MapInitOptions.plugins`. It requires a style with indoor data and special access to indoor mapping features.
* Add experimental `shadowDrawBeforeLayer` property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.
* [tile_store] Add method to set tilestore path to be used by default.
* Faster polygon triangulation for complex polygons.
* General fixes and performance improvements.

## Bug fixes 🐞
* Fix `userData` payload for `onSourceDataLoaded` event during GeoJSON partial update.
* Fix guard rail placement.
* Fix changes in brightness not always getting applied.
* Fix leaking Vertex Array Objects.
* Reset style fog, snow and rain impl when switching to a new style.
* Fix rendering artefacts when persistent buffer mapping is enabled.
* Fix Coercion expression possibleOutputs result for Array type.
* Fix a crash when jumping between different projections.

## Dependencies
* Update gl-native to [v11.18.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.0-beta.1), common to [v24.18.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.18.0-beta.1).


# 11.17.2 February 24, 2026

## Bug fixes 🐞
* Avoid placing occlusion layers after location indicator layer.
* Properly handle `CoordinateBounds` during conversion to internal type.

## Dependencies
* Update gl-native to [v11.17.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.2), common to [v24.17.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.2).


# 11.17.1 December 11, 2025
## Bug fixes 🐞
* Reset style fog, snow and rain impl when switching to a new style.
* Fix changes in brightness not always getting applied.
* Fix occlusion of location indicator in tunnels.
* Fix leaking Vertex Array Objects.

## Dependencies
* Update gl-native to [v11.17.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.1), common to [v24.17.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.1).

# 11.17.0 December 04, 2025
## Breaking changes ⚠️
* Require passing required argument to the constructor of experimental `GeofencingState.Builder`, `GeofencingError.Builder`, `GeofencingEvent.Builder` and `GeofencingOptions.Builder` APIs.

## Features ✨ and improvements 🏁
* Promote Geofencing APIs to stable, remove `MapboxExperimental` annotations from Geofencing APIs.
* Add TileStore improvements and optimizations.
* Promote `ModelLayer` to stable.
* Add `SymbolLayer.occlusionOpacityMode`, `SymbolLayer.iconColorBrightnessMax`, `SymbolLayer.iconColorBrightnessMin`, `SymbolLayer.iconColorContrast` properties.
* Add `FillExtrusionLayer.castShadows` property.
* Add `GeoJsonSource.minZoom` property.
* Add `RasterArraySource.volatile` experimental property.
* Make `line-emissive-strength` property data-driven.
* Add experimental `MapboxMap.setFeatureStateExpression()`, `removeFeatureStateExpression()`, and `resetFeatureStateExpressions()` APIs to efficiently update feature state for multiple features at once using expressions.
* Improved error reporting for offline tile region downloads on Android.
* Enhanced reliability of network connections by improving how Cronet timeouts are handled.
* Added experimental `MapOptions.Builder.scaleFactor()` for scaling icons and texts.
* Add click gesture support to `Marker` composable with `onClick` parameter
* Introduced `ScaleBarSettings.distanceUnits` property supporting metric, imperial, and nautical units, replacing the boolean `isMetricUnits` property.
* Added `fuelingStationModePointOfInterestLabels` configuration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options: "default" (shows both), "fuel" (fuel stations only), "electric" (charging stations only), or "none" (hides both).
* Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using feature-state. See `AppearancesActivity` in example application for further details.
* Memory allocation improvements

## Bug fixes 🐞
* Fix config expression evaluation to properly check dependencies in nested value expressions.
* Fix issue with shadows showing up on top of tunnel roads.
* Fix view-aligned symbols with road elevation being cutout.
* Fix camera listener not unsubscribed when disabling ScaleBar via `updateSettings { enabled = false }`
* Fixed a crash when switching map styles quickly.
* Fixed a threading bug to eliminate 3D rendering issues and instability.
* Internal fixes and performance improvements.
* Fix multiple crashes during style switches related to terrain rendering, texture management, and image cleanup.
* Fix line patterns not elevating properly on HD roads.
* Fix rendering of TileStore tiles when TileStore is used as disk cache and user is offline.
* Fix performance regression for `distance` and `within` expressions when processing large GeoJSON datasets.
* Fix GeoJSON tiled model disappearance during fast zoom interactions.
* Fix rendering issues when switching between globe and mercator projections.
* Logging improvements to reduce noise and duplication.

## Dependencies
* Update gl-native to [v11.17.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0), common to [v24.17.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0).

# 11.17.0-rc.3 November 28, 2025
## Features ✨ and improvements 🏁
* Promote Geofencing APIs to stable, remove `MapboxExperimental` annotations from Geofencing APIs.

## Dependencies
* Update gl-native to [v11.17.0-rc.3](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.3), common to [v24.17.0-rc.3](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.3).


# 11.17.0-rc.2 November 21, 2025
## Dependencies
* Update gl-native to [v11.17.0-rc.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.2), common to [v24.17.0-rc.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.2).


# 11.17.0-rc.1 November 20, 2025
## Features ✨ and improvements 🏁
* Promote `ModelLayer` to stable.
* Add `SymbolLayer.occlusionOpacityMode`, `SymbolLayer.iconColorBrightnessMax`, `SymbolLayer.iconColorBrightnessMin`, `SymbolLayer.iconColorContrast` properties.
* Add `FillExtrusionLayer.castShadows` property.
* Add `GeoJsonSource.minZoom` property.
* Add `RasterArraySource.volatile` experimental property.
* Make `line-emissive-strength` property data-driven.
* Add experimental `MapboxMap.setFeatureStateExpression()`, `removeFeatureStateExpression()`, and `resetFeatureStateExpressions()` APIs to efficiently update feature state for multiple features at once using expressions.

## Bug fixes 🐞
* Fix camera listener not unsubscribed when disabling ScaleBar via `updateSettings { enabled = false }`

## Dependencies
* Update gl-native to [v11.17.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.1), common to [v24.17.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-rc.1).


# 11.17.0-beta.2 November 14, 2025
## Features ✨ and improvements 🏁
* Improved error reporting for offline tile region downloads on Android.
* Enhanced reliability of network connections by improving how Cronet timeouts are handled.

## Bug fixes 🐞
* Fixed a crash when switching map styles quickly.
* Fixed a threading bug to eliminate 3D rendering issues and instability.
* Internal fixes and performance improvements.

## Dependencies
* Update gl-native to [v11.17.0-beta.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-beta.2), common to [v24.17.0-beta.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-beta.2).

# 11.16.4 November 14, 2025
## Bug fixes 🐞
* Internal fixes and performance improvements.

## Dependencies
* Update gl-native to [v11.16.4](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.4), common to [v24.16.4](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.4).


# 11.16.3 November 13, 2025
## Bug fixes 🐞
* Internal fixes and performance improvements.
* Fix multiple crashes during style switches.

## Dependencies
* Update gl-native to [v11.16.3](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.3), common to [v24.16.3](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.3).

# 11.17.0-beta.1 November 05, 2025
## Breaking changes ⚠️
* Require passing required argument to the constructor of experimental `GeofencingState.Builder`, `GeofencingError.Builder`, `GeofencingEvent.Builder` and `GeofencingOptions.Builder` APIs.

## Features ✨ and improvements 🏁
* Added experimental `MapOptions.Builder.scaleFactor()` for scaling icons and texts.
* Add click gesture support to `Marker` composable with `onClick` parameter
* Introduced `ScaleBarSettings.distanceUnits` property supporting metric, imperial, and nautical units, replacing the boolean `isMetricUnits` property.
* Added `fuelingStationModePointOfInterestLabels` configuration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options: "default" (shows both), "fuel" (fuel stations only), "electric" (charging stations only), or "none" (hides both).
* Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using feature-state. See `AppearancesActivity` in example application for further details.
* Memory allocation improvements

## Bug fixes 🐞
 * Fix multiple crashes during style switches related to terrain rendering, texture management, and image cleanup.
 * Fix line patterns not elevating properly on HD roads.
 * Fix rendering of TileStore tiles when TileStore is used as disk cache and user is offline.
 * Fix performance regression for `distance` and `within` expressions when processing large GeoJSON datasets.
 * Fix GeoJSON tiled model disappearance during fast zoom interactions.
 * Fix rendering issues when switching between globe and mercator projections.
 * Logging improvements to reduce noise and duplication.

## Dependencies
* Update gl-native to [v11.17.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-beta.1), common to [v24.17.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.17.0-beta.1).

# 11.16.2 October 31, 2025

## Bug fixes 🐞
* Fix crash on 3D/satellite styles switching

## Dependencies
* Update gl-native to [v11.16.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.2), common to [v24.16.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.2).


# 11.16.1 October 28, 2025

## Bug fixes 🐞
* Fix crash on frequent style switching
* Fix iteration over GeoJSON children for `distance` and `within` expression to results in performance spike
* Fix crash on day/night switch incorrect texture release order

## Dependencies
* Update gl-native to [v11.16.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.1), common to [v24.16.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.1).

# 11.16.0 October 21, 2025
## Bug fixes 🐞
* Fix location request leak when setting custom location provider after updating settings

## Dependencies
* Update gl-native to [v11.16.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0), common to [v24.16.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0).


# 11.16.0-rc.2 October 14, 2025

## Features ✨ and improvements 🏁
* Add zoom expression support for line-cutout-width property.
* TileStore improvements.

## Bug fixes 🐞
* Fix `ConcurrentModificationException` if `detectors` list was modified in `AndroidGesturesManager` while processing events.
* Fix 3D models disappearing randomly during fast zoom interactions.

## Dependencies
* Update gl-native to [v11.16.0-rc.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-rc.2), common to [v24.16.0-rc.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-rc.2).
* Update Mapbox Gestures for Android to 0.9.2.

# 11.16.0-rc.1 October 07, 2025

## Bug fixes 🐞
* Fix `var` expressions that did not work properly with config expressions.
* Fix cutout disappearing at certain zoom and pitch levels with orthographic camera.
* Fix potential crashes when updating style layer properties.

## Dependencies
* Update gl-native to [v11.16.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-rc.1), common to [v24.16.0-rc.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-rc.1).

# 11.16.0-beta.1 September 23, 2025

## Features ✨ and improvements 🏁
* Update target and compile SDK version to 35
* Added support for `LandmarkIcons` featureset in Mapbox Standard Style. Query and interact with landmark building icons that appear on the map, accessing properties including landmark ID, name, type, and localized names through the `StandardLandmarkIconsFeature` class.
* Enhanced `MapboxStandardStyle()` and `MapboxStandardSatelliteStyle()` Compose functions with comprehensive configuration options:
  - **Color customization**: Set custom colors for roads, motorways, water, greenspaces, administrative boundaries, and more
  - **Landmark icons**: Control visibility of landmark building icons and labels (`showLandmarkIcons`, `showLandmarkIconLabels`)
  - **Point-of-interest styling**: Configure POI label backgrounds, colors, and density
  - **Road appearance**: Adjust road brightness, show/hide pedestrian roads and transit networks
  - **Administrative boundaries**: Toggle boundary visibility and customize colors
  - **3D objects**: Control visibility of buildings, landmarks, and trees with `show3dObjects`
* Expose `LineLayer.lineCutoutFadeWidth` to control route line cutout fade width.
* `com.mapbox.maps.MapboxTracing` was deprecated and moved to package `com.mapbox.common.MapboxTracing`.

## Bug fixes 🐞
* Fix incorrect color rendering for gradients and interpolations with zero alpha channel.
* Fix incorrect positioning of map marker annotations, when coordinates do not change.
* Fix incorrect display height for zooming gesture on secondary displays.
* Fix some feature state-related bugs.
* Fix precision issue in hillshade causing terrain with steps.
* Fix incorrect Asset File Source initialization.
* Fix an issue where `MapView#snapshot` listener was invoked twice when the map was not ready.

## Dependencies
* Update gl-native to [v11.16.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-beta.1), common to [24.16.0-beta.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0-beta.1).

# 11.15.2 October 02, 2025
## Features ✨ and improvements 🏁
* Reduce number of allocations for network requests.

## Dependencies
* Update gl-native to [v11.15.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.15.2), common to [24.15.2](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.15.2).

# 11.15.1 September 26, 2025

# 11.15.0 September 11, 2025

## Features ✨ and improvements 🏁
* Expose `LineLayer.lineCutoutOpacity` and `LineLayer.lineCutoutWidth` to make route lines visible through obstructing 3D buildings and other aboveground features.
* Expose experimental `MapboxMap.setStyleLayerPropertiesAsync` and `MapboxMap.setStyleLayerPropertyAsync` (also available through `Style`) to allow setting properties from a any thread and asynchronously.
* Improve performance of the zooming-out animation

## Bug fixes 🐞
* Fix flyTo animation when zoom property is null or not changed
* Fix `MapInteraction` for 2D and 3D location puck indicator
* Fix ViewAnnotation disappears when interacting with location puck at different camera positions due to incorrect 2D puck bounding box calculation
* Fix a bug where Dynamic View Annotations disappeared in corner cases
* Fix bug where View Annotation is not displayed at zoom levels > 22
* Fix potential crash caused by a race condition
* Fix the alignment of the text and icon when using the text-anchor property.
* Fix incorrect background color of icons when non-default color-theme is used
* Fix tile border debug feature flickering on globe projection
* Fix potential ANR (Application Not Responding) issue when retrieving display refresh rate during map initialization by offloading the system call to a background thread with proper timeout and fallback handling.
* Fix frames skipped when calling `mapView.setMaximumFps(..)` multiple times.
* Allow to create text-field without any text
* Fix potential data race in mapbox token initialization
* Fix cronet request cancel due to connect timeout & reduce objects created.

## Dependencies
* Update gl-native to [v11.15.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.15.0), common to [24.15.0](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.15.0).
* Update Mapbox GeoJSON library to [v7.5.0](https://github.com/mapbox/mapbox-java/releases/tag/v7.5.0) which bumps GSON to v2.13.1 to address [CVE-2025-53864](https://nvd.nist.gov/vuln/detail/CVE-2025-53864). If your project uses AGP 7.0, you might need to add the following snippet to your `build.gradle` or upgrade to AGP 8.0+ ([more details](https://issuetracker.google.com/issues/342522142#comment8)):
```
configurations {
    all {
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
    }
}
```
# 11.14.7 September 29, 2025

## Dependencies
* Update gl-native to [v11.14.7](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.14.7), common to [24.14.7](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.14.7).

# 11.14.6 September 18, 2025

## Dependencies
* Update gl-native to [v11.14.6](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.14.6), common to [24.14.6](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.14.6).

# 11.14.4 September 03, 2025

## Features ✨ and improvements 🏁
* Performance optimizations for View Annotations.

## Dependencies
* Update gl-native to v11.14.4, common to 24.14.4.

# 11.14.3 August 29, 2025

## Bug fixes 🐞
* Fix a bug where Dynamic View Annotations disappeared in corner cases
* Fix a bug where location indicator layer disappeared in certain configurations
* Fix potential crash caused by a race condition

## Dependencies
* Update gl-native to v11.14.3, common to 24.14.3

# 11.15.0-rc.1 August 28, 2025

## Bug fixes 🐞
* Fix bug where View Annotation is not displayed at zoom levels > 22
* Fix potential crash caused by a race condition
* Fix the alignment of the text and icon when using the text-anchor property.

## Dependencies
* Update gl-native to v11.15.0-rc.1, common to 24.15.0-rc.1.

# 11.15.0-beta.3 August 18, 2025

## Bug fixes 🐞
* Fix incorrect background color of icons when non-default color-theme is used

## Dependencies
* Update gl-native to v11.15.0-beta.3, common to 24.15.0-beta.3.

# 11.15.0-beta.2 August 15, 2025
## Bug fixes 🐞
* Fix tile border debug feature flickering on globe projection

## Dependencies
* Update gl-native to v11.15.0-beta.2, common to 24.15.0-beta.2.


# 11.15.0-rc.1 August 28, 2025

## Bug fixes 🐞
* Fix frames skipped when calling `mapView.setMaximumFps(..)` multiple times.


# 11.15.0-beta.1 August 12, 2025
## Features ✨ and improvements 🏁
* Improve performance during zoom out camera animations

## Bug fixes 🐞
* Fix potential ANR (Application Not Responding) issue when retrieving display refresh rate during map initialization by offloading the system call to a background thread with proper timeout and fallback handling.
* Fix frames skipped when calling `mapView.setMaximumFps(..)` multiple times.
* Fixed `text-field` to be created without any text but with an image only
* Fix ViewAnnotation disappears when interacting with location puck at different camera positions due to incorrect 2D puck bounding box calculation
* Fix potential data race in mapbox token initialization

## Dependencies
* Update gl-native to v11.15.0-beta.1, common to 24.15.0-beta.1.
* Update Mapbox GeoJSON library to [v7.5.0](https://github.com/mapbox/mapbox-java/releases/tag/v7.5.0) which bumps GSON to v2.13.1 to address [CVE-2025-53864](https://nvd.nist.gov/vuln/detail/CVE-2025-53864). If your project uses AGP 7.0, you might need to add the following snippet to your `build.gradle` or upgrade to AGP 8.0+ ([more details](https://issuetracker.google.com/issues/342522142#comment8)):
```
configurations {
    all {
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
    }
}
```

# 11.14.2 August 15, 2025

# 11.14.1 August 07, 2025

## Bug fixes 🐞
* Fix missing map loaded event in case vector tile is not found

## Dependencies
* Update gl-native to v11.14.1, common to 24.14.1.


# 11.14.0 July 30, 2025
## Features ✨ and improvements 🏁
* Added new `FillLayer.fillPatternCrossFade`, `FillExtrusionLayer.fillExtrusionPatternCrossFade`, `LineLayer.fillExtrusionPatternCrossFade` properties.
* Provide depth range used for rendering 3D content to custom layers.
* Added new `split` expression, which returns an array of substrings from a string, split by a delimiter parameter.
* Added experimental `MapView.scheduleThreadServiceTypeReset()` to reset the renderer thread service type to Interactive. This experimental API is intended for edge cases involving custom lifecycle management or specific scenarios where the default lifecycle behavior is insufficient.
* Added `setContentDescription()` method to `AttributionPlugin` and `AttributionView` interfaces to programmatically set accessibility content description for the attribution button.
* Added `MapView.onResume()` which should be called in `onResume()` of the host activity or fragment to resume the map view if `plugin-lifecycle` is not used.

## Bug fixes 🐞
* [compose] Avoid excessive debug logging on SourceState, which can result in Out Of Memory in extreme cases. Avoid appending geojson data in `GeoJsonSourceState.toString()` override.
* Fix exception when accessing enum properties in annotations.
* Fix an issue where instant animation might not have been executed in case of launching multiple animations within a single frame.
* Apply obfuscation rules for generated `@MapboxModule` with `enableConfiguration = true`
* Handle getSharedPreferences exceptions in SettingsServiceHelper
* Fixed placement for point symbols with symbol-z-offset
* Fixed some icons being skipped in rare cases
* Fixed text/icon intersections for optional texts/icons in some cases
* Fix Dynamic View Annotations caches rebuilding on line-trim-offset updates
* Fix symbol z-offset not working with fixed fill-extrusion-height
* Fix potential race conditions in the sprite loader
* Fix a crash when using `CustomRasterSourceTileRenderer`
* Fix crashes when logging invalid data

## Dependencies
* Update gl-native to v11.14.0, common to 24.14.0.



# 11.14.0-rc.1 July 16, 2025
## Features ✨ and improvements 🏁
* Added `setContentDescription()` method to `AttributionPlugin` and `AttributionView` interfaces to programmatically set accessibility content description for the attribution button.
* Added `MapView.onResume()` which should be called in `onResume()` of the host activity or fragment to resume the map view if `plugin-lifecycle` is not used.
* Improved zoom animation performance by preloading target tiles and reducing unnecessary intermediate tile processing, resulting in smoother camera transitions and reduced frame rate drops.
* Introduce experimental `Marker` convenience API in Jetpack Compose. Use `Marker` to quickly add a `ViewAnnotation` pin at the specified coordinates with custom text, color, and stroke.

## Bug fixes 🐞
* Fix exception when accessing enum properties in annotations.
* Fix an issue where instant animation might not have been executed in case of launching multiple animations within a single frame.
* Fix potential data race in Mapbox token initialization
* Minor fixes in `TileStore` service
* Fixed an issue where View Annotations would disappear when rotating and tilting the `MapView` with `allowOverlapWithPuck=false` due to incorrect intersection calculations with off-screen location pucks.

## Dependencies
* Update gl-native to v11.14.0-rc.1 and common to 24.14.0-rc.1.

# 11.14.0-beta.1 July 02, 2025

## Features ✨ and improvements 🏁
* Added new `FillLayer.fillPatternCrossFade`, `FillExtrusionLayer.fillExtrusionPatternCrossFade`, `LineLayer.fillExtrusionPatternCrossFade` properties.
* Provide depth range used for rendering 3D content to custom layers.
* Added new `split` expression, which returns an array of substrings from a string, split by a delimiter parameter.

## Bug fixes 🐞
* Apply obfuscation rules for generated `@MapboxModule` with `enableConfiguration = true`
* Handle getSharedPreferences exceptions in SettingsServiceHelper

## Dependencies
* Update gl-native to v11.14.0-beta.1, common to 24.14.0-beta.1.
* Update Mapbox Base Android library to [v0.12.0](https://github.com/mapbox/mapbox-base-android/releases/tag/v0.12.0).
* Update Mapbox Gestures Android library to [v0.9.1](https://github.com/mapbox/mapbox-gestures-android/releases/tag/v0.9.1).


# 11.13.1 June 18, 2025

## Bug fixes 🐞
* Apply a more robust policy for retrying failed network requests.

## Dependencies
* Update gl-native to v11.13.1, common to 24.13.1.

# 11.13.0
## Features ✨ and improvements 🏁
* Expose `RenderThreadStatsRecorder` as experimental API.
* Expose new experimental properties: `CircleLayer.circleElevationReference`, `FillLayer.fillConstructBridgeGuardRail`, `FillLayer.fillBridgeGuardRailColor`, `FillLayer.fillTunnelStructureColor`.
* Promote `MapInteraction` APIs to stable, remove experimental `Style.STANDARD_EXPERIMENTAL` constant, as `Style.STANDARD` supports featuresets and map interactions by default.
  * Add common `MapInteraction` APIs to `StandardStyleInteractionsState`: `.onFeaturesetClicked`, `.onLayerClicked`, `.onFeaturesetLongClicked`, `.onLayerLongClicked`, `.onMapClicked`, `.onMapLongClicked`.
  * Add `StyleInteractionsState` to `MapboxStandardSatelliteStyle` so interactions can be used with the satellite style.
* [compose] Rename experimental `ExperimentalStandardStyleState` to `StandardStyleState`, rename experimental `MapboxStandardStyleExperimental` to `MapboxStandardStyle(styleImportsContent, topSlot, middleSlot, bottomSlot, standardStyleState)`, and deprecate previous `MapboxStandardStyle` composable functions.
* Expose new experimental camera event `MapboxMap.subscribeCameraChangedCoalesced`, `MapboxMap.cameraChangedCoalescedEvents`.
* [compose] Expose new camera event `MapState.cameraChangedCoalescedEvents`
* Introduce custom layer matrices API `CustomLayerMapProjection` in `CustomLayerRenderParameters` for globe projection.
* Introduce `minZoom` and `maxZoom` properties for `CircleAnnotationManager`, `PointAnnotationManager`, `PolygonAnnotationManager`, `PolylineAnnotationManager`.
* Introduce experimental `worldview` expression.
* [compose] Introduce `minZoom` and `maxZoom` properties for `CircleAnnotationGroupState`, `PointAnnotationGroupState`, `PolygonAnnotationGroupState`, `PolylineAnnotationGroupState`.
* [compose] Add config option `showLandmarkIcons` to `MapboxStandardStyle`.
* Improve the performance of `MapboxMap.cameraForCoordinates(...)` for large amounts of points.

## Bug fixes 🐞
* Fix elevated lines rendering regression.
* Do not write errors to logs if event was not send because events are disabled.
* Fixed incorrect placement for symbols with symbol-z-elevate on Globe projection.
* Elevated symbol heights now change as smooth as building heighs.
* Fixing unstable placement for elevated symbols.
* Respect config expressions in filter.
* Fix symbol order with symbol-z-elevate true and symbol-z-order viewport-y.
* Fix issue that promoteId content is missing after vector source serialization.
* Fixed disappearing volatile tiles on camera changes in offline mode when `maximumStaleInterval` is set.
* Resolved frequent DVA repositioning issues.
* Fixed fill patterns for elevated roads.
* Tiles are now properly reloaded when the language setting is removed.
* Limited the collision grid size for view annotations to improve performance.
* Fix location indicator bearing animation update being missing in some occasions.
* Fix a bug where `cameraForCoordiantes` with screen box oscillates when initial zoom is close to set max zoom.
* Skip unneeded tiles relayout when landmark icons get enabled.
* Fix a crash in disk cache code when fetching a high-zoom (z > 16) tile.

## Dependencies
* Update gl-native to v11.13.0, common to 24.13.0.

# 11.12.4 June 12, 2025
## Bug fixes 🐞
* Fix location indicator bearing animation update being missing in some occasions.

## Dependencies
* Update gl-native to v11.12.4 and common to v24.12.4.

# 11.12.3 June 05, 2025
## Features ✨ and improvements 🏁
* Improve the performance of `MapboxMap.cameraForCoordinates(...)` for large amounts of points.

## Bug fixes 🐞
* Fix a crash in disk cache code when fetching a high-zoom (z > 16) tile.
* Fix a bug where cameraForCoordiantes with screen box oscillates when initial zoom is close to set max zoom.
## Dependencies
* Update gl-native to v11.12.3 and common to v24.12.3.

# 11.13.0-rc.1 June 03, 2025
## Features ✨ and improvements 🏁
* Introduce custom layer matrices API `CustomLayerMapProjection` in `CustomLayerRenderParameters` for globe projection.
* Introduce `minZoom` and `maxZoom` properties for `CircleAnnotationManager`, `PointAnnotationManager`, `PolygonAnnotationManager`, `PolylineAnnotationManager`.
* [compose] Introduce `minZoom` and `maxZoom` properties for `CircleAnnotationGroupState`, `PointAnnotationGroupState`, `PolygonAnnotationGroupState`, `PolylineAnnotationGroupState`.
* [compose] Add config option `showLandmarkIcons` to `MapboxStandardStyle`.

## Bug fixes 🐞
* Fixed disappearing volatile tiles on camera changes in offline mode when `maximumStaleInterval` is set.
* Resolved frequent DVA repositioning issues.
* Fixed fill patterns for elevated roads.
* Tiles are now properly reloaded when the language setting is removed.
* Limited the collision grid size for view annotations to improve performance.

## Dependencies
* Update gl-native to v11.13.0-rc.1, common to 24.13.0-rc.1.

# 11.13.0-beta.1 May 19, 2025
## Breaking changes ⚠️
* `PointAnnotation.iconImageCrossFade` has been deprecated and setting value to it will not have any impact. Use `PointAnnotationManager.iconImageCrossFadeTransition` instead.

## Features ✨ and improvements 🏁
* Expose `RenderThreadStatsRecorder` as experimental API.
* Expose new experimental properties: `CircleLayer.circleElevationReference`, `FillLayer.fillConstructBridgeGuardRail`, `FillLayer.fillBridgeGuardRailColor`, `FillLayer.fillTunnelStructureColor`.
* Promote `MapInteraction` APIs to stable, remove experimental `Style.STANDARD_EXPERIMENTAL` constant, as `Style.STANDARD` supports featuresets and map interactions by default.
  * Add common `MapInteraction` APIs to `StandardStyleInteractionsState`: `.onFeaturesetClicked`, `.onLayerClicked`, `.onFeaturesetLongClicked`, `.onLayerLongClicked`, `.onMapClicked`, `.onMapLongClicked`.
  * Add `StyleInteractionsState` to `MapboxStandardSatelliteStyle` so interactions can be used with the satellite style.
* [compose] Rename experimental `ExperimentalStandardStyleState` to `StandardStyleState`, rename experimental `MapboxStandardStyleExperimental` to `MapboxStandardStyle(styleImportsContent, topSlot, middleSlot, bottomSlot, standardStyleState)`, and deprecate previous `MapboxStandardStyle` composable functions.
* Expose new experimental camera event `MapboxMap.subscribeCameraChangedCoalesced`, `MapboxMap.cameraChangedCoalescedEvents`.
* [compose] Expose new camera event `MapState.cameraChangedCoalescedEvents`

## Bug fixes 🐞
* Fix elevated lines rendering regression.
* Do not write errors to logs if event was not send because events are disabled.
* Fixed incorrect placement for symbols with symbol-z-elevate on Globe projection.
* Elevated symbol heights now change as smooth as building heighs.
* Fixing unstable placement for elevated symbols.
* Respect config expressions in filter.
* Fix symbol order with symbol-z-elevate true and symbol-z-order viewport-y.
* Fix issue that promoteId content is missing after vector source serialization.

## Dependencies
* Update gl-native to v11.13.0-beta.1, common to 24.13.0-beta.1.


# 11.11.1 May 16, 2025
## Bug fixes 🐞
* Fixed a crash that occurred when a runtime-added unused image was removed and later reused.

## Dependencies
* Update gl-native to v11.11.4.

# 11.12.0 May 7, 2025
## Features ✨ and improvements 🏁
* Mapbox Geofencing is now available in public preview. Follow the documentation and code examples for [Android](https://docs.mapbox.com/android/maps/guides/geofencing/) and [iOS](https://docs.mapbox.com/ios/maps/guides/geofencing/) to get started.
* Avoid fetching pixelRatio from gl-native while rendering scalebar to improve CPU usage.
* Promote `MapView.attribution.getMapAttributionDelegate().extraAttributions` to stable.
* Expose an experimental API to define a non-rectangular screen culling shape(`MapboxMap.get/setScreenCullingShape`)
* Introduce experimental `colorUseTheme` API for `AmbientLight`, `DirectionalLight`, and `FlatLight` to override color theme of light.
* [compose] Introduce experimental `colorUseTheme` API for `AmbientLightState`, `DirectionalLightState`, and `FlatLightState` to override color theme of light.
* [compose] Introduce experimental `vignetteColorUseTheme` and `colorUseTheme` for `RainState` and `SnowState` which allows overriding color theme of precipitations.
* [compose] Annotate `rememberGeoJsonSourceState` as delicate API due to performance implications when used with large GeoJsonData.
* Avoid dynamic view annotation overlapping given symbol layers.
* Vector icons can now also be retrieved via `getStyleImage` API.
* Revert changes to `at` expression and add new `at-interpolated` expression.
* Enable tile pack v2 format by default.

## Bug fixes 🐞
* Fixed a crash that occurred when a runtime-added unused image was removed and later reused.
* `*-sort-key` properties now uses double, fixing incorrect sorting with big key values
* Fix registering camera change listener every time `mapView.scalebar.enabled` is called with value `true` and it was already enabled.
* Fix map flickering caused by the fill-extrusion pan tiles and missing stencil in 3D layers.
* Fix semi transparent landmark icons.
* Return null for config expression if requested config option is missing.
* Fix clipPath and mask rendering for vector icon rasterization.
* Fix dotted lines on tile borders.
* Fix pattern not found when using imports.
* Fix line layer not rendering if using `line-pattern` inside an imported style.
* Fix ground effect gradient not working with multiple polygons.
* Add simple bounds check to avoid crash during centroid computation.
* Fix invisible line when interpolating line-width from 0 to 1 using line-progress.
* Tile loading speedup.
* Fix URL migration to DB v10.

## Dependencies
* Update gl-native to v11.12.0 and common to v24.12.0.

# 11.12.0-rc.1
## Features ✨ and improvements 🏁
* Avoid fetching pixelRatio from gl-native while rendering scalebar to improve CPU usage.
* Promote `MapView.attribution.getMapAttributionDelegate().extraAttributions` to stable.


# 11.12.0-beta.1 April 09, 2025

## Features ✨ and improvements 🏁
* Introduce experimental `colorUseTheme` API for `AmbientLight`, `DirectionalLight`, and `FlatLight` to override color theme of light.
* [compose] Introduce experimental `colorUseTheme` API for `AmbientLightState`, `DirectionalLightState`, and `FlatLightState` to override color theme of light.
* [compose] Introduce experimental `vignetteColorUseTheme` and `colorUseTheme` for `RainState` and `SnowState` which allows overriding color theme of precipitations.
* [compose] Annotate `rememberGeoJsonSourceState` as delicate API due to performance implications when used with large GeoJsonData.
* Avoid dynamic view annotation overlapping given symbol layers.
* Vector icons can now also be retrieved via `getStyleImage` API.
* Revert changes to `at` expression and add new `at-interpolated` expression.
* Enable tile pack v2 format by default.

## Bug fixes 🐞
* Fix semi transparent landmark icons.
* Return null for config expression if requested config option is missing.
* Fix clipPath and mask rendering for vector icon rasterization.
* Fix dotted lines on tile borders.
* Fix pattern not found when using imports.
* Fix line layer not rendering if using `line-pattern` inside an imported style.
* Fix ground effect gradient not working with multiple polygons.
* Add simple bounds check to avoid crash during centroid computation.
* Fix invisible line when interpolating line-width from 0 to 1 using line-progress.
* Tile loading speedup.
* Fix URL migration to DB v10.

## Dependencies
* Update gl-native to v11.12.0-beta.1 and common to v24.12.0-beta.1.


# 11.11.0 March 26, 2025
## Features ✨ and improvements 🏁
* Support for landmark icons. Landmark icons are stylized, uniquely designed POI icons that indicate the most popular and recognizable landmarks on the map.
* Support expression input for `PromoteId`.
* Add a setting that allows geofencing users with Android <= 28 to access background locations. Add `mapbox-location-config.xml` file with the following content:
```xml
<resources>
  <bool name="com.mapbox.common.location.sdk28_use_background_permissions">true</bool>
</resources>
```
* Add `Expression` support for `*UseTheme` style properties to override color theme for particular color properties in all layers.
* Add experimental `*UseTheme` support for annotations and `LocationPuck3D`.
* Introduce experimental `Style.setImportColorTheme`, which allows changing the color theme of the style import.
* [compose] Introduce experimental `StyleImportState.styleColorTheme` which allows changing the color theme of the style import.
* Conflate `MapboxMap.mapLoadedEvents`, `MapboxMap.mapLoadingErrorEvents`, `MapboxMap.styleLoadedEvents`, `MapboxMap.styleDataLoadedEvents`, `MapboxMap.cameraChangedEvents`, `MapboxMap.mapIdleEvents`, `MapboxMap.sourceAddedEvents`, `MapboxMap.sourceRemovedEvents`, `MapboxMap.sourceDataLoadedEvents`, `MapboxMap.styleImageMissingEvents`, `MapboxMap.styleImageRemoveUnusedEvents`, `MapboxMap.renderFrameStartedEvents`, `MapboxMap.renderFrameFinishedEvents`, `MapboxMap.resourceRequestEvents` by default to avoid blocking main thread due to slow collectors.

## Bug fixes 🐞
* Fix annotation drag being triggered when multi-finger gesture is in progress.
* Fix missing vector images after style change.
* Ensure background color is correctly set.
* Fix background layer not being updated if raster image was updated in-place or if color theme changed.
* Trigger DVA replacement if zoom diff is big.
* Fix line placement symbol disappearing issue when in zoom level 5.
* Place view annotation away from camera when pitch > 45.
* Fix dark shades of gradient effect in night preset.
* Fix Custom Raster Source behavior on re-creation.
* Change unreachable connection retries to use exponential backoff.
* Fixed incorrect rgba to hsla conversion for white color.
* Fix vector images rasterization.
* Make katakana and CJK symbol rendered correctly in vertical writing mode.
* Fix a bug that may cause style packs to be either inaccessible or incorrect when updating an older tile store database created with Maps SDK 11.9 or earlier versions. **In systems that have already used Maps SDK 11.10.0 through 11.10.2, a re-download of style packs may be necessary.**
* Fix a map start time regression by speed up tile loading.

## Dependencies
* Update gl-native to v11.11.0 and common to v24.11.0.



# 11.10.3 March 19, 2025
## Bug fixes 🐞
* Fix a bug that may cause style packs to be either inaccessible or incorrect when updating an older tile store database created with Maps SDK 11.9 or earlier versions. **In systems that have already used Maps SDK 11.10.0 through 11.10.2, a re-download of style packs may be necessary.**
* Fix a map start time regression by speed up tile loading.

## Dependencies
* Update gl-native to v11.10.3, common to v24.10.1.


# 11.11.0-rc.1 March 12, 2025
## Features ✨ and improvements 🏁
* Add `Expression` support for `*UseTheme` style properties to override color theme for particular color properties in all layers.
* Add experimental `*UseTheme` support for annotations and `LocationPuck3D`.
* Introduce experimental `Style.setImportColorTheme`, which allows changing the color theme of the style import.
* [compose] Introduce experimental `StyleImportState.styleColorTheme` which allows changing the color theme of the style import.
* Conflate `MapboxMap.mapLoadedEvents`, `MapboxMap.mapLoadingErrorEvents`, `MapboxMap.styleLoadedEvents`, `MapboxMap.styleDataLoadedEvents`, `MapboxMap.cameraChangedEvents`, `MapboxMap.mapIdleEvents`, `MapboxMap.sourceAddedEvents`, `MapboxMap.sourceRemovedEvents`, `MapboxMap.sourceDataLoadedEvents`, `MapboxMap.styleImageMissingEvents`, `MapboxMap.styleImageRemoveUnusedEvents`, `MapboxMap.renderFrameStartedEvents`, `MapboxMap.renderFrameFinishedEvents`, `MapboxMap.resourceRequestEvents` by default to avoid blocking main thread due to slow collectors.

## Bug fixes 🐞
* Fixed incorrect rgba to hsla conversion for white color.
* Fix vector images rasterization.
* Make katakana and CJK symbol rendered correctly in vertical writing mode.

## Dependencies
* Update gl-native to v11.11.0-rc.1 and common to v24.11.0-rc.1.


# 11.11.0-beta.1 March 03, 2025
## Features ✨ and improvements 🏁
* Support expression input for `PromoteId`.
* Add a setting that allows geofencing users with Android <= 28 to access background locations. Add `mapbox-location-config.xml` file with the following content:
```xml
<resources>
  <bool name="com.mapbox.common.location.sdk28_use_background_permissions">true</bool>
</resources>
```

## Bug fixes 🐞
* Fix missing vector images after style change.
* Ensure background color is correctly set.
* Fix background layer not being updated if raster image was updated in-place or if color theme changed.
* Trigger DVA replacement if zoom diff is big.
* Fix line placement symbol disappearing issue when in zoom level 5.
* Place view annotation away from camera when pitch > 45.
* Fix dark shades of gradient effect in night preset.
* Fix Custom Raster Source behavior on re-creation.
* Change unreachable connection retries to use exponential backoff.

## Dependencies
* Update gl-native to v11.11.0-beta.1 and common to v24.11.0-beta.1.


# 11.10.2 February 25, 2025
## Bug fixes 🐞
* Fixing missing vector images after style change

## Dependencies
* Update gl-native to v11.10.2.


# 11.10.1 February 24, 2025
## Features ✨ and improvements 🏁
* Small performance improvements in the map initialization call chain by avoiding IPC calls on main.

## Bug fixes 🐞
* Fix LUT not being applied to in-place updated images.
* Fix in-place updates for SDF images.
* Fix background layer not being updated if raster image was updated in-place or if color theme changed.
* Vector icons supported in location indicator layer.
* Fix mipmaps for images updated inplace.
* Ensure background color is correctly set.

## Dependencies
* Update gl-native to v11.10.1.

# 11.10.0 February 13, 2025
## Features ✨ and improvements 🏁
* Localize geofencing attribution dialog.
* Introduce `ViewAnnotationOptions.priority`, deprecate `ViewAnnotationOptions.selected`. Use this property to define view annotation sort order.
* Introduce `ViewAnnotationOptions.minZoom` and `ViewAnnotationOptions.maxZoom`. Use these properties to configure zoom-level specific view annotations.
* Introduce `SymbolLayer.iconSizeScaleRange`, `SymbolLayer.textSizeScaleRange`, `FillLayer.fillElevationReference`, `LineLayer.lineCrossSlope`, `LineLayer.lineWidthUnit`, `LineLayer.lineCrossSlope`, `LineLayer.lineElevationReference`, `DirectionalLight.shadowQuality`, `Rain.distortionStrength`, `Rain.distortionStrengthTransition`, `Rain.dropletSize`, `Rain.dropletSizeTransition`, `Rain.vignetteColor`, `Rain.vignetteColorTransition`, `Snow.flakeSize`, `Snow.flakeSizeTransition`, `Snow.vignetteColor`, `Snow.vignetteColorTransition`.
* Introduce experimental Color Theme API, which allows changing the style of the map using `Style.setStyleColorTheme`.
* Introduce experimental `ModelLayer.modelElevationReference` property.
* Introduce experimental `LocationPuck3D.modelElevationReference` property.
* Add experimental `ViewAnnotationManager.setViewAnnotationAvoidLayers` for specifying layers that view annotations should avoid. The API currently only supports line layers.
* Add `*UseTheme` String style properties to override color theme for particular color properties in all layers and their Compose counterparts.
* Add support for the `maxOverscaleFactorForParentTiles` property in `CustomRasterSource` and `CustomGeometrySource`, allowing greater control over tile overscaling behavior when rendering custom raster tiles.
* Extend tilecover for elevated roads avoiding missing road segments.
* Change default value of experimental `Rain.opacity` to 0.19, default `Rain.vignette` to 0.3, `Snow.opacity` to 0.19, default `Snow.vignette` to 0.3.
* Update the default value of experimental properties: default `Snow.density` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.85]`; default `Snow.opacity` is updated to `1.0`; default `Snow.vignette` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.3]`; default `Snow.centerThinning` is updated to `0.4`, default `Snow.direction` is updated to `listOf(0.0, 50.0)`; default `Snow.flakeSize` is updated to `0.71`; default `Rain.density` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.85]`; default `Rain.color` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,"#03113d",0.3,"#a8adbc"]`; default `Rain.opacity` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,0.88,1,0.7]`;  default `Rain.vignette` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.3]`; default `Rain.vignetteColor` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,"#001736",0.3,"#464646"]`; default `Rain.centerThinning` is updated to `0.57`; default `Rain.dropletSize` is updated to `listOf(2.6, 18.2)`; default `Rain.distortionStrength` is updated to `0.7`.
* Remove `@MapboxExperimental` from `ClipLayer.clipLayerTypes` and `ClipLayer.clipLayerScope`.
* Remove `<profileable android:shell=true/>` flag in release manifest.
* Remove `libandroid-tests-support-code.so` from release AAR.
* Remove experimental `ShadowQuality` properties from direct light layer.
* [compose] Introduce experimental `StyleState.colorTheme` state for setting `ColorTheme` for the style.
* [compose] Introduce experimental `SymbolLayerState.iconSizeScaleRange`, `SymbolLayerState.textSizeScaleRange`, `FillLayerState.fillElevationReference`, `LineLayerState.lineCrossSlope`, `LineLayerState.lineWidthUnit`, `LineLayerState.lineCrossSlope`, `LineLayerState.lineElevationReference`, `DirectionalLightState.shadowQuality`, `RainState.distortionStrength`, `RainState.distortionStrengthTransition`, `RainState.dropletSize`, `RainState.dropletSizeTransition`, `RainState.vignetteColor`, `RainState.vignetteColorTransition`, `SnowState.flakeSize`, `SnowState.flakeSizeTransition`, `SnowState.vignetteColor`, `SnowState.vignetteColorTransition`.

## Bug fixes 🐞
* [compose] Fix wrong layer order when using `aboveLayer(..)` composable function.
* [compose] Fix annotation composable functions not working inside `slot(...)` composable function.
* [compose] Fix annotation composable functions rendered in wrong order.
* Prefer last used anchor for Dynamic View Annotation placement.
* Fix out of bound issue of gradient effect.
* Fix hidden elements caused by flood lighting.
* Fix parsing raster sprite images with float stretch/content coordinates.
* Fix glyph loading issue when incorrect glyph url is used.
* Speed up start with big old offline database.
* Fix disappearing tiles in some rare conditions.
* Fix rasterization of images with positive mask coordinates which caused vector icons not being rasterized correctly.
* Place Dynamic View Annotation further away from camera when pitch > 45. This allows Dynamic View Annotation to be placed further away from the puck so it is not repositioned frequently.
* Fix visual artifacts from `FillExtrusionLayer` for night presets.
* Fix precision issues with 3D puck and orthographic projection when zoom is more than 17. The fix prevents puck-shadow from disappearing in lower zoom scales in 2D-views.
* Fix road shadows issues when far away and low zoom levels.
* Fix app crash when autoMaxZoom=true.
* Fix an unhandled exception occurring during config expression parsing
* Mark `BackgroundLayer.backgroundPitchAlignment` as experimental.
* Skip any map scroll (panning) if shove gesture is already in progress preventing camera flying away.
* Fix crash on style reload if a config referenced in the expression was missing.
* Fix high cpu usage when map goes to background.
* Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
* Fix background layers which used images from a mapbox-hosted style.
* Fix images being displayed incorrectly in some cases with line patterns and `LineJoin.NONE`.
* Fix too early sources loaded event.
* Fix to calculate image size for max text size, not for the next zoom level text size.
* Fix line rendering for layers with elevated and non-elevated buckets

## Dependencies
* Update gl-native to v11.10.0 and common to v24.10.0.



# 11.9.2 February 05, 2025
## Bug fixes 🐞
* Fix exception while parsing the config expression.
* Fix app crash when autoMaxZoom=true.
* Fixing parsing raster sprite images with float stretch/content coordinates.
* Fix color theme data decoding.
* Fix glyph loading issue when incorrect glyph url is used.

## Dependencies
* Update gl-native to v11.9.3.


# 11.10.0-rc.1 January 31, 2025
## Features ✨ and improvements 🏁
* Add experimental `ViewAnnotationManager.setViewAnnotationAvoidLayers` for specifying layers that view annotations should avoid. The API currently only supports line layers.
* Add support for the `maxOverscaleFactorForParentTiles` property in `CustomRasterSource` and `CustomGeometrySource`, allowing greater control over tile overscaling behavior when rendering custom raster tiles.
* Add `*UseTheme` String style properties to override color theme for particular color properties in all layers and their Compose counterparts.
* Remove experimental `ShadowQuality` properties from direct light layer.
* Extend tilecover for elevated roads avoiding missing road segments.
* Introduce experimental Color Theme API, which allows changing the style of the map using `Style.setStyleColorTheme`.
* [compose] Introduce experimental `StyleState.colorTheme` state for setting `ColorTheme` for the style.

## Bug fixes 🐞
* Prefer last used anchor for Dynamic View Annotation placement.
* Fix out of bound issue of gradient effect.
* Fix hidden elements caused by flood lighting.
* Fix parsing raster sprite images with float stretch/content coordinates.
* Fix glyph loading issue when incorrect glyph url is used.
* Fix color theme data decoding.
* Speed up start with big old offline database.
* Fix disappearing tiles in some rare conditions.
* Fix road shadows issues when far away and low zoom levels.

## Dependencies
* Update gl-native to v11.10.0-rc.1 and common to v24.10.0-rc.1.


# 11.10.0-beta.1 January 20, 2025
## Features ✨ and improvements 🏁
* Localize geofencing attribution dialog.
* Introduce `ViewAnnotationOptions.priority`, deprecate `ViewAnnotationOptions.selected`. Use this property to define view annotation sort order.
* Introduce `ViewAnnotationOptions.minZoom` and `ViewAnnotationOptions.maxZoom`. Use these properties to configure zoom-level specific view annotations.
* Introduce `SymbolLayer.iconSizeScaleRange`, `SymbolLayer.textSizeScaleRange`, `FillLayer.fillElevationReference`, `LineLayer.lineCrossSlope`, `LineLayer.lineWidthUnit`, `LineLayer.lineCrossSlope`, `LineLayer.lineElevationReference`, `DirectionalLight.shadowQuality`, `Rain.distortionStrength`, `Rain.distortionStrengthTransition`, `Rain.dropletSize`, `Rain.dropletSizeTransition`, `Rain.vignetteColor`, `Rain.vignetteColorTransition`, `Snow.flakeSize`, `Snow.flakeSizeTransition`, `Snow.vignetteColor`, `Snow.vignetteColorTransition`.
* Change default value of experimental `Rain.opacity` to 0.19, default `Rain.vignette` to 0.3, `Snow.opacity` to 0.19, default `Snow.vignette` to 0.3.
* [compose] Introduce experimental `SymbolLayerState.iconSizeScaleRange`, `SymbolLayerState.textSizeScaleRange`, `FillLayerState.fillElevationReference`, `LineLayerState.lineCrossSlope`, `LineLayerState.lineWidthUnit`, `LineLayerState.lineCrossSlope`, `LineLayerState.lineElevationReference`, `DirectionalLightState.shadowQuality`, `RainState.distortionStrength`, `RainState.distortionStrengthTransition`, `RainState.dropletSize`, `RainState.dropletSizeTransition`, `RainState.vignetteColor`, `RainState.vignetteColorTransition`, `SnowState.flakeSize`, `SnowState.flakeSizeTransition`, `SnowState.vignetteColor`, `SnowState.vignetteColorTransition`.
* Remove `@MapboxExperimental` from `ClipLayer.clipLayerTypes` and `ClipLayer.clipLayerScope`.
* Update the default value of experimental properties: default `Snow.density` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.85]`; default `Snow.opacity` is updated to `1.0`; default `Snow.vignette` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.3]`; default `Snow.centerThinning` is updated to `0.4`, default `Snow.direction` is updated to `listOf(0.0, 50.0)`; default `Snow.flakeSize` is updated to `0.71`; default `Rain.density` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.85]`; default `Rain.color` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,"#03113d",0.3,"#a8adbc"]`; default `Rain.opacity` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,0.88,1,0.7]`;  default `Rain.vignette` is updated to `["interpolate",["linear"],["zoom"],11,0,13,0.3]`; default `Rain.vignetteColor` is updated to `["interpolate",["linear"],["measure-light","brightness"],0,"#001736",0.3,"#464646"]`; default `Rain.centerThinning` is updated to `0.57`; default `Rain.dropletSize` is updated to `listOf(2.6, 18.2)`; default `Rain.distortionStrength` is updated to `0.7`.
* Introduce experimental `ModelLayer.modelElevationReference` property.
* Introduce experimental `LocationPuck3D.modelElevationReference` property.
* Remove `<profileable android:shell=true/>` flag in release manifest.
* Remove `libandroid-tests-support-code.so` from release AAR.

## Bug fixes 🐞
* Mark `BackgroundLayer.backgroundPitchAlignment` as experimental.
* Skip any map scroll (panning) if shove gesture is already in progress preventing camera flying away.
* Fix crash on style reload if a config referenced in the expression was missing.
* Fix high cpu usage when map goes to background.
* Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
* Fix background layers which used images from a mapbox-hosted style.
* Fix images being displayed incorrectly in some cases with line patterns and `LineJoin.NONE`.
* Fix too early sources loaded event.

## Known issues ⚠️
* Disappearing tiles in some rare conditions. Fix will be available in the next release.

## Dependencies
* Update gl-native to v11.10.0-beta.2 and common to v24.10.0-beta.2.


# 11.9.1 January 20, 2025
## Bug fixes 🐞
* Add missing experimental annotation to `backgroundPitchAlignment` property.
* Fix crash on style reload if a config referenced in the expression was missing.
* Fix high cpu usage when map goes to background.
* Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
* Fix background layers which used images from a mapbox-hosted style.
* Fix disappearing tiles in some rare conditions.

## Dependencies
* Update gl-native to v11.9.2.

# 11.9.0 December 18, 2024
## Known issues 🛑
We do not recommend using this version. Please use [11.9.1](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.9.1) or newer.

* When a map is currently visible and user press home button the [MapboxRenderThread](maps-sdk/src/main/java/com/mapbox/maps/renderer/RenderHandlerThread.kt) consumes CPU (potentially keeping **one** CPU busy).

## Breaking changes ⚠️
* Expose experimental Geofencing with `com.mapbox.annotation.MapboxExperimental`.
* Move experimental geofencing classes to `com.mapbox.common.geofencing` package from `com.mapbox.common.experimental.geofencing`.
* Make constructor of experimental `GeofencingOptions`, `GeofencingEvent` and other geofencing classes holding data private. Associated `Builder()` classes should be used instead.
* Remove experimental `MapboxMap.queryRenderedFeatures` and `MapboxMap.querySourceFeatures` that used `FeaturesetQueryTarget` as an argument.

## Features ✨ and improvements 🏁
* Introduce experimental `FillExtrusionLayer.fillExtrusionBaseAlignment` and `FillExtrusionLayer.fillExtrusionHeightAlignment` APIs to control the behavior of fill extrusion base over terrain and the behavior of fill extrusion height over terrain respectively.
* Introduce experimental `FillLayer.fillZOffset` and `FillLayer.fillZOffsetTransition` APIs to specify a uniform elevation in meters and define the transition of `fillZOffset` respectively.
* Adds support for `fillZOffset` in `PolygonAnnotation`, `PolygonAnnotationManager`, `PolygonAnnotationOptions`.
* Introduce `BackgroundLayer.backgroundPitchAlignment` API to configure the orientation of background layer.
* Introduce `LocationIndicatorLayer.emphasisCircleGlowRange` and `LocationIndicatorLayer.emphasisCircleGlowRangeTransition` APIs to control the glow effect of the emphasis circle from the solid start to the fully transparent end and to set the transition options for the `emphasisCircleGlowRange` property, respectively.
* Introduce `radius` parameter for `ClickInteraction` and `LongClickInteraction` to support an extra area around the interaction.
* Add a way to specify options for `Expression.image()`.
* Introduce experimental `AnimatableModel`, `ModelMaterialPart`, `ModelNodePart` APIs to style the 3D location puck's overridable parts. [Implementation example](app/src/main/java/com/mapbox/maps/testapp/examples/LocationComponentModelAnimationActivity.kt).
* Introduce `modelRotationExpression`, `modelColor`, `modelColorExpression`, `modelColorMixIntensity`, `modelColorMixIntensityExpression`, `modelOpacityExpression` on `LocationPuck3D`.
* Introduce experimental `LocationPuck3D.materialOverrides` and `LocationPuck3D.nodeOverrides` API to allow model parts overrides.
* Add vector icons support: SDK will now download vector icons and rasterize them locally, which will results in better icon quality for icons resized via icon-size. Changeable colors support: icon expression can now have optional parameter to change named colors described in SVG icons metadata.
* Add support for shadows from elevated structures.
* Add `toHsla` expression.
* Introduce experimental `Snow` and `Rain` APIs to show the snow or rain effect on the map.
* Expose experimental `getFeaturesets` for `MapboxMap` and `Style`.
* Remove`MapboxExperimental` from `ClipLayer`.
* [compose] Introduce `LocationIndicatorLayerState.emphasisCircleGlowRange` and `LocationIndicatorLayerState.emphasisCircleGlowRangeTransition` properties.
* [compose] Introduce `FillLayerState.fillZOffset` and `FillLayerState.fillZOffsetTransition` properties.
* [compose] Introduce `FillExtrusionLayerState.fillExtrusionBaseAlignment` and `FillExtrusionLayerState.fillExtrusionHeightAlignment` properties.
* [compose] Introduce `BackgroundLayerState.backgroundPitchAlignment` property.
* [compose] Adds support for `fillZOffset` in `PolygonAnnotationState`, `PolygonAnnotationGroupState`.
* [compose] Expose `MapViewportState.cameraForCoordinates` method.
* [compose] Introduce `radius` parameter for all relevant compose functions for interactions to support an extra area around the interaction.
* [compose] Introduce experimental `SnowState` and `RainState` APIs to show the snow or rain effect on the map.

## Bug fixes 🐞
* Fix dark shades caused by corner case light directions when `FillLayer.fillExtrusionEmissiveStrength` is set to high values (closer to 1).
* Fix rendering of interleaved SDF and non-SDF icons in the same layer.
* Fix `LineLayer.lineEmissiveStrength` not being applied to patterned lines.
* Fix map flickering on some Mali and PowerVR GPUs.
* Fix shader fog computation being incorrectly enabled for landmarks.
* Handle empty payloads for offline resources.
* Encapsulate config expression in assertion expression when expected return type is known.
* Fixes a bug which caused icon shifts in some cases.
* Fix feature state update if layer contains data driven `measureLight` expression.
* Fix the owning thread log error prints on legacy `OfflineRegion` creation.
* Fix a crash in interpolate expression.
* Resolve usage of `GeoJsonSource.autoMaxZoom` for single feature.
* Resolve dotted line issue with very long lines.
* Fix texture gather for shadows not being selected correctly by default.
* Performance improvements for runtime-added images.
* Fix `AndroidDeviceLocationProvider` reporting an error when location permissions are not granted.
* Improve exception handling inside Cronet providers when Cronet library failed to load.
* Improve character spacing for text offsets.
* Fixed crash on Android API level < 26.
* Do not load vector icons for client-provided sprites.
* Fall back to the feature's original ID when promoteId is an object and the source layer is not specified as a key in the object.
* Fixed crash caused by a repeated command buffer commit call.
* Fixed invalid processing of icon-size 0, using biggest of two image sizes with interpolated icon-size during vector icons rasterization.

## Dependencies
* Update gl-native to v11.9.0 and common to v24.9.0.



# 11.9.0-rc.1 December 10, 2024
## Features ✨ and improvements 🏁
* Add `toHsla` expression.
* Introduce experimental `Snow` and `Rain` APIs to show the snow or rain effect on the map.
* [compose] Introduce experimental `SnowState` and `RainState` APIs to show the snow or rain effect on the map.

## Bug fixes 🐞
* Improve character spacing for text offsets.
* Fixed crash on Android API level < 26.
* Do not load vector icons for client-provided sprites.
* Fall back to the feature's original ID when promoteId is an object and the source layer is not specified as a key in the object.
* Fixed crash caused by a repeated command buffer commit call.

## Dependencies
* Update gl-native to v11.9.0-rc.1 and common to v24.9.0-rc.1.


# 11.8.1 December 03, 2024
## Bug fixes 🐞
* Fix map flickering on some Mali and PowerVR GPUs.

## Dependencies
* Update gl-native to v11.8.1.


# 11.9.0-beta.1 November 28, 2024
## Breaking changes ⚠️
* Expose experimental Geofencing with `com.mapbox.annotation.MapboxExperimental`.
* Move experimental geofencing classes to `com.mapbox.common.geofencing` package from `com.mapbox.common.experimental.geofencing`.
* Make constructor of experimental `GeofencingOptions`, `GeofencingEvent` and other geofencing classes holding data private. Associated `Builder()` classes should be used instead.
* Remove experimental `MapboxMap.queryRenderedFeatures` and `MapboxMap.querySourceFeatures` that used `FeaturesetQueryTarget` as an argument.

## Features ✨ and improvements 🏁
* Introduce experimental `FillExtrusionLayer.fillExtrusionBaseAlignment` and `FillExtrusionLayer.fillExtrusionHeightAlignment` APIs to control the behavior of fill extrusion base over terrain and the behavior of fill extrusion height over terrain respectively.
* Introduce experimental `FillLayer.fillZOffset` and `FillLayer.fillZOffsetTransition` APIs to specify a uniform elevation in meters and define the transition of `fillZOffset` respectively.
* Adds support for `fillZOffset` in `PolygonAnnotation`, `PolygonAnnotationManager`, `PolygonAnnotationOptions`.
* Introduce `BackgroundLayer.backgroundPitchAlignment` API to configure the orientation of background layer.
* Introduce `LocationIndicatorLayer.emphasisCircleGlowRange` and `LocationIndicatorLayer.emphasisCircleGlowRangeTransition` APIs to control the glow effect of the emphasis circle from the solid start to the fully transparent end and to set the transition options for the `emphasisCircleGlowRange` property, respectively.
* Introduce `radius` parameter for `ClickInteraction` and `LongClickInteraction` to support an extra area around the interaction.
* Add a way to specify options for `Expression.image()`.
* Introduce experimental `AnimatableModel`, `ModelMaterialPart`, `ModelNodePart` APIs to style the 3D location puck's overridable parts. [Implementation example](app/src/main/java/com/mapbox/maps/testapp/examples/LocationComponentModelAnimationActivity.kt).
* Introduce `modelRotationExpression`, `modelColor`, `modelColorExpression`, `modelColorMixIntensity`, `modelColorMixIntensityExpression`, `modelOpacityExpression` on `LocationPuck3D`.
* Introduce experimental `LocationPuck3D.materialOverrides` and `LocationPuck3D.nodeOverrides` API to allow model parts overrides.
* Add vector icons support: SDK will now download vector icons and rasterize them locally, which will results in better icon quality for icons resized via icon-size. Changeable colors support: icon expression can now have optional parameter to change named colors described in SVG icons metadata.
* Add support for shadows from elevated structures.
* [compose] Introduce `LocationIndicatorLayerState.emphasisCircleGlowRange` and `LocationIndicatorLayerState.emphasisCircleGlowRangeTransition` properties.
* [compose] Introduce `FillLayerState.fillZOffset` and `FillLayerState.fillZOffsetTransition` properties.
* [compose] Introduce `FillExtrusionLayerState.fillExtrusionBaseAlignment` and `FillExtrusionLayerState.fillExtrusionHeightAlignment` properties.
* [compose] Introduce `BackgroundLayerState.backgroundPitchAlignment` property.
* [compose] Adds support for `fillZOffset` in `PolygonAnnotationState`, `PolygonAnnotationGroupState`.
* [compose] Expose `MapViewportState.cameraForCoordinates` method.
* [compose] Introduce `radius` parameter for all relevant compose functions for interactions to support an extra area around the interaction.

## Bug fixes 🐞
* Fix dark shades caused by corner case light directions when `FillLayer.fillExtrusionEmissiveStrength` is set to high values (closer to 1).
* Fix rendering of interleaved SDF and non-SDF icons in the same layer.
* Fix `LineLayer.lineEmissiveStrength` not being applied to patterned lines.
* Fix map flickering on some Mali and PowerVR GPUs.
* Fix shader fog computation being incorrectly enabled for landmarks.
* Handle empty payloads for offline resources.
* Encapsulate config expression in assertion expression when expected return type is known.
* Fixes a bug which caused icon shifts in some cases.
* Fix feature state update if layer contains data driven `measureLight` expression.
* Fix the owning thread log error prints on legacy `OfflineRegion` creation.
* Fix a crash in interpolate expression.
* Resolve usage of `GeoJsonSource.autoMaxZoom` for single feature.
* Resolve dotted line issue with very long lines.
* Fix texture gather for shadows not being selected correctly by default.
* Performance improvements for runtime-added images.
* Fix `AndroidDeviceLocationProvider` reporting an error when location permissions are not granted.
* Improve exception handling inside Cronet providers when Cronet library failed to load.

## Dependencies
* Update gl-native to v11.9.0-beta.1 and common to v24.9.0-beta.1.

## Known issues
* Custom (non Mapbox-hosted) sprites could fail to load in some scenarios.


# 11.7.3 November 19, 2024
## Bug fixes 🐞
* Fix map flickering on some Mali and PowerVR GPUs.

## Dependencies
* Update gl-native to v11.7.3.


# 11.8.0 November 11, 2024
## Breaking changes ⚠️
* Change the signature of experimental `MapboxMap.queryRenderedFeatures(RenderedQueryGeometry, TypedFeaturesetDescriptor, Value?, QueryRenderedFeaturesetFeaturesCallback)` to `MapboxMap.queryRenderedFeatures(TypedFeaturesetDescriptor, RenderedQueryGeometry?, Value?, QueryRenderedFeaturesetFeaturesCallback)`. `RenderedQueryGeometry` being NULL is equivalent to passing a bounding box encompassing the entire map viewport.
* [compose] Change the signature of experimental `MapState.queryRenderedFeatures(RenderedQueryGeometry, TypedFeaturesetDescriptor, Expression?): List` to `MapState.queryRenderedFeatures(TypedFeaturesetDescriptor, RenderedQueryGeometry?, Expression?): List`. `RenderedQueryGeometry` being NULL is equivalent to passing a bounding box encompassing the entire map viewport.

## Features ✨ and improvements 🏁
* Introduce `Style.STANDARD_EXPERIMENTAL` style supporting featuresets and map interactions. **Important: this style should not be used in production as the style definition on backend is a subject to change after v11.8.0 stable release!**
* Introduce fully typed map click and long click interactions working with `Style.STANDARD_EXPERIMENTAL`: `standardPoi`, `standardPlaceLabels`, `standardBuildings`.
* Use [Cronet](https://developer.android.com/develop/connectivity/cronet) as the default network stack. If Cronet is not available, network stack defaults to [OkHttp](https://square.github.io/okhttp/) used in previous versions. More information available [here](https://docs.mapbox.com/android/maps/guides/install/#managing-google-play).
* Introduce `OnClusterClickListener` and `OnClusterLongClickListener` for `CircleAnnotationManager` and `PointAnnotationManager`. These callbacks receive the clicked cluster represented by a `ClusterFeature`.
* Introduce experimental `getStyleGlyphURL` / `setStyleGlyphURL` functions for `MapboxMap` and `Style`.
* Make `fill-extrusion-emissive-strength` property data-driven.
* Dispatch view annotations update before rendering, so that view annotations and map layers are rendered simultaneously and thus decreasing the view annotations latency when using `ViewAnnotationUpdateMode.MAP_FIXED_DELAY` mode.
* Overscale composited tile components in offline.
* Skip rendering landmarks when the camera is inside them.
* Introduce experimental Geofencing API. Implementation example: [SimpleGeofencingActivity.kt](app/src/main/java/com/mapbox/maps/testapp/examples/geofence/SimpleGeofencingActivity.kt) and [ExtendedGeofencingActivity.kt](app/src/main/java/com/mapbox/maps/testapp/examples/geofence/ExtendedGeofencingActivity.kt).
* Introduce experimental `MapView.attribution.getMapAttributionDelegate().extraAttributions` to add custom attributions to the attribution dialog.
* [compose] Deprecate all `Annotation` and `AnnotationGroup` composables that take `onClick` parameter. Now all annotation interactions could be set with appropriate `AnnotationInteractionsState` or `AnnotationGroupInteractionsState` stored in `AnnotationGroupState`.
* [compose] Introduce `AnnotationInteractionsState` and `AnnotationGroupInteractionsState` states that allow to set callbacks for annotation interactions via `onClicked()` and `onLongClicked()`.`PointAnnotationGroupInteractionsState` and `CircleAnnotationGroupInteractionsState` also provide ability to set callbacks for interactions with clusters via `onClusterClicked` and `onClusterLongClicked`.
* [compose] Introduce `remember` (e.g. `rememberPolylineAnnotationGroupInteractionsState` and `rememberPolylineAnnotationInteractionsState`) composable functions to create, init and remember all types of `AnnotationInteractionsState` and `AnnotationGroupInteractionsState`.
* [compose] Introduce `<AnnotationType>InteractionsState.isDraggable` / `<AnnotationType>GroupInteractionsState.isDraggable` API for all annotation types allowing to drag annotations. Callbacks `onDragStarted()`, `onDragged()`,`onDragFinished()` are added as well.
* [compose] Introduce experimental `Attribution(..., geofencingDialog)` compose function to customize Geofencing consent dialog.
* Annotate `Bitmap.toMapboxImage()` and related as delicate API due to its native memory allocation.
* Use fallback engine if cronet fails to load.

## Bug fixes 🐞
* Fix terrain related snapshotter crash.
* Handle empty payloads for offline resources.
* Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline `line-trim-offset` change.
* Respect polygons with holes on querying rendered features.
* Fix self-overlap of line corners when large `line-width` is used.
* Adjust conflation intersection test padding to fix disappearing `fill-extrusion`.
* Fix TileCover bug with polygon horizontal edges.
* Fix a bug with image dependent paint properties not getting a correct value after image become available.
* Clear tile pyramid on color theme change before the tiles are updated.
* Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
* Return operation error for featurestate related API in case the featureset is not valid.
* Fix crash on style pack load when no access token is set.
* Fix crash in TerrainRenderer when using snapshotter.
* Fix crash on re-creation of a custom raster source when different options are provided.
* Return parsing errors if runtime added style import JSON is not valid.
* Fix missing models in rendering result if `reduceMemoryUse` is called before taking snapshot.
* Fix the incorrect behaviour when using `symbol-z-oder` property.
* Fix `raster-particle` trail discontinuity at the antimeridian.
* Fix an Android 12 specific bug where location puck custom animator options lambda without explicit `ValueAnimator.duration` resulted in `duration = 0`.
* Fix a rare `android.content.res.Resources$NotFoundException` happening when creating a `MapView`.
* Fix a rare `NullPointerException` happening when fling gesture event is recognized.
* Fix `StandardPoiFeature.geometry` to have a concrete `Point` type instead of `Geometry` interface.
* Fix a bug in `GeoJsonSource.autoMaxZoom` leading to rendering artifacts with long dotted line layers.
* Fix a crash if Cronet failed to init on device by fallbacking to OkHttp.
* Disable false-positive lint error "Incorrect number of expressions".
* Fix possible out of memory in native heap during annotation manager annotation updates (`AnnotationManager.update(...)`).
* Fix CronetProviderInstaller proguard missing rule.
* Fix rare crash due to native library not loaded when receiving background locations.
* Do not modify file description structure when reading resource files.
* Fix lifecycle calculation in case activity destruction is in progress.

## Dependencies
* Update gl-native to v11.8.0 and common to v24.8.0.



# 11.7.2 November 05, 2024
## Bug fixes 🐞
* Fix terrain related snapshotter crash.
* Handle empty payloads for offline resources.
* Do not modify file description structure when reading resource files.

## Dependencies
* Update gl-native to v11.7.2 and common to v24.7.2.



# 11.8.0-rc.1 October 23, 2024
## Bug fixes 🐞
* Fix an Android 12 specific bug where location puck custom animator options lambda without explicit `ValueAnimator.duration` resulted in `duration = 0`.
* Fix a rare `android.content.res.Resources$NotFoundException` happening when creating a `MapView`.
* Fix a rare `NullPointerException` happening when fling gesture event is recognized.
* Fix `StandardPoiFeature.geometry` to have a concrete `Point` type instead of `Geometry` interface.
* Fix a bug in `GeoJsonSource.autoMaxZoom` leading to rendering artifacts with long dotted line layers.
* Fix a crash if Cronet failed to init on device by fallbacking to OkHttp.

## Dependencies
* Update gl-native to v11.8.0-rc.1 and common to v24.8.0-rc.1.


# 11.8.0-beta.1 October 14, 2024
## Features ✨ and improvements 🏁
* Introduce `Style.STANDARD_EXPERIMENTAL` style supporting featuresets and map interactions. **Important: this style should not be used in production as the style definition on backend is a subject to change after v11.8.0 stable release!**
* Introduce fully typed map click and long click interactions working with `Style.STANDARD_EXPERIMENTAL`: `standardPoi`, `standardPlaceLabels`, `standardBuildings`.
* Use [Cronet](https://developer.android.com/develop/connectivity/cronet) as the default network stack. If Cronet is not available, network stack defaults to [OkHttp](https://square.github.io/okhttp/) used in previous versions. More information available [here](https://docs.mapbox.com/android/maps/guides/install/#managing-google-play).
* Introduce `OnClusterClickListener` and `OnClusterLongClickListener` for `CircleAnnotationManager` and `PointAnnotationManager`. These callbacks receive the clicked cluster represented by a `ClusterFeature`.
* Introduce experimental `getStyleGlyphURL` / `setStyleGlyphURL` functions for `MapboxMap` and `Style`.
* Make `fill-extrusion-emissive-strength` property data-driven.
* Dispatch view annotations update before rendering, so that view annotations and map layers are rendered simultaneously and thus decreasing the view annotations latency when using `ViewAnnotationUpdateMode.MAP_FIXED_DELAY` mode.
* Overscale composited tile components in offline.
* Skip rendering landmarks when the camera is inside them.
* Introduce experimental Geofencing API. Implementation example: [GeofencingActivity.kt](app/src/main/java/com/mapbox/maps/testapp/examples/geofence/GeofencingActivity.kt)
* Introduce experimental `MapView.attribution.getMapAttributionDelegate().extraAttributions` to add custom attributions to the attribution dialog.
* [compose] Deprecate all `Annotation` and `AnnotationGroup` composables that take `onClick` parameter. Now all annotation interactions could be set with appropriate `AnnotationInteractionsState` or `AnnotationGroupInteractionsState` stored in `AnnotationGroupState`.
* [compose] Introduce `AnnotationInteractionsState` and `AnnotationGroupInteractionsState` states that allow to set callbacks for annotation interactions via `onClicked()` and `onLongClicked()`.`PointAnnotationGroupInteractionsState` and `CircleAnnotationGroupInteractionsState` also provide ability to set callbacks for interactions with clusters via `onClusterClicked` and `onClusterLongClicked`.
* [compose] Introduce `remember` (e.g. `rememberPolylineAnnotationGroupInteractionsState` and `rememberPolylineAnnotationInteractionsState`) composable functions to create, init and remember all types of `AnnotationInteractionsState` and `AnnotationGroupInteractionsState`.
* [compose] Introduce `<AnnotationType>InteractionsState.isDraggable` / `<AnnotationType>GroupInteractionsState.isDraggable` API for all annotation types allowing to drag annotations. Callbacks `onDragStarted()`, `onDragged()`,`onDragFinished()` are added as well.
* [compose] Introduce experimental `Attribution(..., geofencingDialog)` compose function to customize Geofencing consent dialog.

## Bug fixes 🐞
* Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline `line-trim-offset` change.
* Respect polygons with holes on querying rendered features.
* Fix self-overlap of line corners when large `line-width` is used.
* Adjust conflation intersection test padding to fix disappearing `fill-extrusion`.
* Fix TileCover bug with polygon horizontal edges.
* Fix a bug with image dependent paint properties not getting a correct value after image become available.
* Clear tile pyramid on color theme change before the tiles are updated.
* Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
* Return operation error for featurestate related API in case the featureset is not valid.
* Fix crash on style pack load when no access token is set.
* Fix crash in TerrainRenderer when using snapshotter.
* Fix crash on re-creation of a custom raster source when different options are provided.
* Return parsing errors if runtime added style import JSON is not valid.
* Fix missing models in rendering result if `reduceMemoryUse` is called before taking snapshot.
* Fix the incorrect behaviour when using `symbol-z-oder` property.
* Fix `raster-particle` trail discontinuity at the antimeridian.

## Dependencies
* Update gl-native to v11.8.0-beta.1 and common to v24.8.0-beta.1.

# 11.7.1 October 10, 2024
## Bug fixes 🐞
* Respect polygons with holes on querying rendered features.

## Dependencies
* Update gl-native to v11.7.1 and common to v24.7.1.


# 11.7.0 September 26, 2024
## Features ✨ and improvements 🏁
* [compose] Introduce `PointAnnotationState.iconOcclusionOpacity`, `PointAnnotationState.textOcclusionOpacity` to control occlusion opacity for individual point annotation.
* [compose] Remove `MapboxExperimental` from `PolylineAnnotationGroupState.lineOcclusionOpacity`, `PointAnnotationGroupState.iconOcclusionOpacity`, `PointAnnotationGroupState.textOcclusionOpacity`.
* [compose] Expose data-driven properties on `AnnotationGroupState`s. Now it's possible to set data-driven properties globally on `AnnotationGroupState` and specify per-annotation overrides in `AnnotationState`. Setting global property value on `AnnotationGroupState` could introduce performance improvements when the amount of annotations is large.
* [compose] Remove experimental `ModelLayerState.modelFrontCutoff`.
* [compose] Introduce experimental `GeoJsonSourceState.autoMaxZoom` property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer).
* [compose] Introduce experimental `ClipLayerState.clipLayerScope` API to remove data from certain style fragments only.
* [compose] Introduce experimental `PointAnnotationState.symbolZOffset` property.
* [compose] Introduce experimental `PointAnnotationGroupState.symbolElevationReference` property.
* [compose] Introduce experimental `SymbolLayerState.symbolElevationReference` and `SymbolLayerState.symbolZOffset` properties.
* [compose] Introduce experimental `SymbolLayerState.symbolZOffsetTransition` API.
* [compose] Introduce experimental `StyleInteractionsState`, `StyleImportsInteractionsState`, `LayerInteractionsState` to handle interactions to the style, style imports and layers.
* [compose] Introduce experimental `StyleImport` composable functions to accept `StyleImportsInteractionsState` as an parameter.
* [compose] Introduce experimental `LayerInteractionsState` as part of `*LayerState` of layers that's driven by a source.
* [compose] Introduce experimental `MapState.getFeatureState`, `MapState.setFeatureState`, `MapState.removeFeatureState` and `MapState.resetFeatureState` APIs.
* [compose] Introduce `StyleState` that groups `StyleImportsConfig`, `StyleInteractionsState`, `Projection`, `AtmosphereState`, `TerrainState`, `LightsState`, `styleTransition`.
* [compose] Introduce `GenericStyle` composable function that uses `StyleState` as parameter and deprecate `GenericStyle` that takes individual light/terrain/projection states.
* [compose] Introduce `MapStyle` composable function that uses `StyleState` as parameter and deprecate `MapStyle` that takes individual light/terrain/projection states.
* [compose] Introduce `StyleImportState` that groups `ImportConfigs` and `StyleImportInteractionsState`.
* [compose] Introduce `StyleImport` composable function that uses `StyleImportState` as parameter and deprecate `StyleImport` that takes `ImportConfigs`.
* Publish Mapbox Maps Android artifacts using NDK 27 and [support for 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes).
  * The new artifacts are available by appending `-ndk27` to the artifact ID (for example, `com.mapbox.maps:android-ndk27:11.7.0`).
* Introduce experimental interactive feature elements and related APIs. Those APIs provide the convenient way to add the click / long click listener to layer / featureset / map itself with `MapboxMap.addInteraction`.
* Expose `lineTrimColor` and `lineTrimFadeRange` on `LineLayer` which allow to set custom color for trimmed line and fade effect for trim. Update navigation example to use those properties.
* Introduce `PointAnnotation.iconOcclusionOpacity`, `PointAnnotation.textOcclusionOpacity` to control occlusion opacity for individual point annotation.
* Remove `MapboxExperimental` from `SymbolLayer.iconOcclusionOpacity`, `SymbolLayer.textOcclusionOpacity` and these properties are now supported on global zoom levels with default value changed to `0`.
* Remove `MapboxExperimental` from `PolylineAnnotationManager.lineOcclusionOpacity`, `PointAnnotationManager.iconOcclusionOpacity`, `PointAnnotationManager.textOcclusionOpacity`.
* Expose data-driven properties on `AnnotationManager`s. Now it's possible to set data-driven properties globally on `AnnotationManager` and specify per-annotation overrides. Setting global property value on `AnnotationManager` could introduce performance improvements when the amount of annotations is large.
* Remove experimental `ModelLayer.modelFrontCutoff`.
* Introduce experimental `GeoJsonSource.autoMaxZoom` property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer).
* Introduce static `HttpServiceFactory.setCancellationCallback` API.
* Reduce style parsing time.
* Enable multiple meta tiling schemes for composited sources.
* Expose experimental `ClipLayer.clipLayerScope` API to remove data from certain style fragments only.
* Expose experimental `PointAnnotation.symbolZOffset` property.
* Expose experimental `PointAnnotationManager.symbolElevationReference` property.
* Expose experimental `SymbolLayer.symbolElevationReference` and `SymbolLayer.symbolZOffset` properties.
* Expose experimental `SymbolLayer.symbolZOffsetTransition` API.
* Introduce experimental `MapboxMap.queryRenderedFeature` allowing to get an `InteractiveFeature` for given geometry, `FeaturesetHolder` and optional filter.
* Introduce experimental `FillExtrusionLayer.fillExtrusionLineWidth` and `FillExtrusionLayerState.fillExtrusionLineWidth` in Compose allowing to switch fill extrusion rendering into wall rendering mode. Use this property to render the feature with the given width over the outlines of the geometry.
* Add missing experimental annotation to `PointAnnotationManager.symbolZOffset` and `PolylineAnnotationManager.lineZOffset`
* Deprecate `PolylineAnnotationManager.lineTrimColor` in favour of `PolylineAnnotationManager.lineTrimColorString`/`PolylineAnnotationManager.lineTrimColorInt`.

## Bug fixes 🐞
* [compose] Fix `ViewAnnotation` size not being updated when content layout changes.
* [compose] Fix `UnsatisfiedLinkError` issue when rendering preview.
* Return parsing errors if runtime added style import JSON is not valid.
* Fix color theme change before the tiles are updated.
* Fix annotation issues with click / long click callback ordering and dragging. Now the order of triggering the callbacks / dragging is determined: from top-level rendered annotation to bottom-level one.
* Fix `OnAnnotationInteractionListener` not triggered if any `OnAnnotationClickListener.onAnnotationClick` returns true.
* Fix incorrect layer updates when using `ClipLayer.clipLayerTypes` or `ClipLayerState.clipLayerTypes` in Compose.
* Fix shadow rendering issues when using `FillExtrusionLayer.fillExtrusionCutoffFadeRange` or `FillExtrusionLayerState.fillExtrusionCutoffFadeRange`.
* Significantly reduce the rate at which raster-particle trails cross each other.
* Fix normal offset to improve shadow accuracy.
* Fix data synchronization between renderer and the main threads on map resize.
* Regenerate location indicator mipmap on image change.
* Fix landmark visibility issues near tile borders.
* Fix elevated line depth occlusion issue in 2D mode.
* Fix Dynamic View Annotation position update for annotated geojson feature with `allowZElevate` to be true.
* Fix race condition between `setFeatureState` and `removeFeatureState` / `resetFeatureStates` resulting in feature state not being applied or removed.
* Fix a crash when calling `CameraAnimationsPlugin.easeTo()` with empty camera options or `CameraAnimationsPlugin.playAnimatorsSequentially()` / `CameraAnimationsPlugin.playAnimatorsTogether()` with an empty array of animators.
* Fix ongoing animations being canceled when `CameraAnimationsPlugin.flyTo()` with empty camera options is called.
* Fix simultaneous scale and rotation gestures not working when the first registered rotation is a scale one.
* Fix crash on Android tilestore where null data was returned.
* Fix the incorrect behaviour when using `SymbolLayer.symbolZOrder` property.
* Fix retrieval of tilesets for 3d tiles in offline mode.
* Fix rendering errors of patterns on high zoom levels.
* Fix a bug where style changes weren't reflected after the source layer of a layer was changed.

## Dependencies
* Update gl-native to v11.7.0 and common to v24.7.0.

# 11.7.0-rc.1 September 16, 2024
## Breaking changes ⚠️
* Experimental interactive features API changes:
    * `FeatureStateValue` was removed in favour of generic `FeatureState`.
    * `MapboxMap.setFeatureState` takes a single `FeatureState` class instead of vararg `FeatureStateValue`.
    * `BaseInteractiveFeature` was removed in favour of `InteractiveFeature`.
    * `InteractiveFeature.state` is now a generic of `FeatureState`.
    * `MapboxMap.getFeatureState` signature changed to be generic and return typed `FeatureState` in the new `FeatureStateCallback`.

## Features ✨ and improvements 🏁
* Introduce experimental `MapboxMap.queryRenderedFeature` allowing to get an `InteractiveFeature` for given geometry, `FeaturesetHolder` and optional filter.
* Introduce experimental `FillExtrusionLayer.fillExtrusionLineWidth` and `FillExtrusionLayerState.fillExtrusionLineWidth` in Compose allowing to switch fill extrusion rendering into wall rendering mode. Use this property to render the feature with the given width over the outlines of the geometry.
* Add missing experimental annotation to `PointAnnotationManager.symbolZOffset` and `PolylineAnnotationManager.lineZOffset`
* Deprecate `PolylineAnnotationManager.lineTrimColor` in favour of `PolylineAnnotationManager.lineTrimColorString`/`PolylineAnnotationManager.lineTrimColorInt`.
* [compose] Introduce experimental `StyleInteractionsState`, `StyleImportsInteractionsState`, `LayerInteractionsState` to handle interactions to the style, style imports and layers.
* [compose] Introduce experimental `StyleImport` composable functions to accept `StyleImportsInteractionsState` as an parameter.
* [compose] Introduce experimental `LayerInteractionsState` as part of `*LayerState` of layers that's driven by a source.
* [compose] Introduce experimental `MapState.getFeatureState`, `MapState.setFeatureState`, `MapState.removeFeatureState` and `MapState.resetFeatureState` APIs.
* [compose] Introduce `StyleState` that groups `StyleImportsConfig`, `StyleInteractionsState`, `Projection`, `AtmosphereState`, `TerrainState`, `LightsState`, `styleTransition`.
* [compose] Introduce `GenericStyle` composable function that uses `StyleState` as parameter and deprecate `GenericStyle` that takes individual light/terrain/projection states.
* [compose] Introduce `MapStyle` composable function that uses `StyleState` as parameter and deprecate `MapStyle` that takes individual light/terrain/projection states.
* [compose] Introduce `StyleImportState` that groups `ImportConfigs` and `StyleImportInteractionsState`.
* [compose] Introduce `StyleImport` composable function that uses `StyleImportState` as parameter and deprecate `StyleImport` that takes `ImportConfigs`.

## Bug fixes 🐞
* Fix a crash when calling `CameraAnimationsPlugin.easeTo()` with empty camera options or `CameraAnimationsPlugin.playAnimatorsSequentially()` / `CameraAnimationsPlugin.playAnimatorsTogether()` with an empty array of animators.
* Fix ongoing animations being canceled when `CameraAnimationsPlugin.flyTo()` with empty camera options is called.
* Fix simultaneous scale and rotation gestures not working when the first registered rotation is a scale one.
* Fix crash on Android tilestore where null data was returned.
* Fix the incorrect behaviour when using `SymbolLayer.symbolZOrder` property.
* Fix retrieval of tilesets for 3d tiles in offline mode.
* Fix rendering errors of patterns on high zoom levels.
* Fix a bug where style changes weren't reflected after the source layer of a layer was changed.

# 11.6.1 September 10, 2024
## Bug fixes 🐞
* Fix for offline retrieval of 3D tiles for `Style.STANDARD`.

## Dependencies
* Update gl-native to v11.6.1 and common to v24.6.1.

# 11.7.0-beta.1 September 03, 2024
## Features ✨ and improvements 🏁
* [compose] Introduce `PointAnnotationState.iconOcclusionOpacity`, `PointAnnotationState.textOcclusionOpacity` to control occlusion opacity for individual point annotation.
* [compose] Remove `MapboxExperimental` from `PolylineAnnotationGroupState.lineOcclusionOpacity`, `PointAnnotationGroupState.iconOcclusionOpacity`, `PointAnnotationGroupState.textOcclusionOpacity`.
* [compose] Expose data-driven properties on `AnnotationGroupState`s. Now it's possible to set data-driven properties globally on `AnnotationGroupState` and specify per-annotation overrides in `AnnotationState`. Setting global property value on `AnnotationGroupState` could introduce performance improvements when the amount of annotations is large.
* [compose] Remove experimental `ModelLayerState.modelFrontCutoff`.
* [compose] Introduce experimental `GeoJsonSourceState.autoMaxZoom` property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer).
* [compose] Introduce experimental `ClipLayerState.clipLayerScope` API to remove data from certain style fragments only.
* [compose] Introduce experimental `PointAnnotationState.symbolZOffset` property.
* [compose] Introduce experimental `PointAnnotationGroupState.symbolElevationReference` property.
* [compose] Introduce experimental `SymbolLayerState.symbolElevationReference` and `SymbolLayerState.symbolZOffset` properties.
* [compose] Introduce experimental `SymbolLayerState.symbolZOffsetTransition` API.
* Introduce experimental interactive feature elements and related APIs. Those APIs provide the convenient way to add the click / long click listener to layer / featureset / map itself with `MapboxMap.addInteraction`.
* Expose `lineTrimColor` and `lineTrimFadeRange` on `LineLayer` which allow to set custom color for trimmed line and fade effect for trim. Update navigation example to use those properties.
* Introduce `PointAnnotation.iconOcclusionOpacity`, `PointAnnotation.textOcclusionOpacity` to control occlusion opacity for individual point annotation.
* Remove `MapboxExperimental` from `SymbolLayer.iconOcclusionOpacity`, `SymbolLayer.textOcclusionOpacity` and these properties are now supported on global zoom levels with default value changed to `0`.
* Remove `MapboxExperimental` from `PolylineAnnotationManager.lineOcclusionOpacity`, `PointAnnotationManager.iconOcclusionOpacity`, `PointAnnotationManager.textOcclusionOpacity`.
* Expose data-driven properties on `AnnotationManager`s. Now it's possible to set data-driven properties globally on `AnnotationManager` and specify per-annotation overrides. Setting global property value on `AnnotationManager` could introduce performance improvements when the amount of annotations is large.
* Remove experimental `ModelLayer.modelFrontCutoff`.
* Introduce experimental `GeoJsonSource.autoMaxZoom` property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer).
* Introduce static `HttpServiceFactory.setCancellationCallback` API.
* Reduce style parsing time.
* Enable multiple meta tiling schemes for composited sources.
* Expose experimental `ClipLayer.clipLayerScope` API to remove data from certain style fragments only.
* Expose experimental `PointAnnotation.symbolZOffset` property.
* Expose experimental `PointAnnotationManager.symbolElevationReference` property.
* Expose experimental `SymbolLayer.symbolElevationReference` and `SymbolLayer.symbolZOffset` properties.
* Expose experimental `SymbolLayer.symbolZOffsetTransition` API.

## Bug fixes 🐞
* [compose] Fix `UnsatisfiedLinkError` issue when rendering preview.
* Fix annotation issues with click / long click callback ordering and dragging. Now the order of triggering the callbacks / dragging is determined: from top-level rendered annotation to bottom-level one.
* Fix `OnAnnotationInteractionListener` not triggered if any `OnAnnotationClickListener.onAnnotationClick` returns true.
* Fix incorrect layer updates when using `ClipLayer.clipLayerTypes` or `ClipLayerState.clipLayerTypes` in Compose.
* Fix shadow rendering issues when using `FillExtrusionLayer.fillExtrusionCutoffFadeRange` or `FillExtrusionLayerState.fillExtrusionCutoffFadeRange`.
* Significantly reduce the rate at which raster-particle trails cross each other.
* Fix normal offset to improve shadow accuracy.
* Fix data synchronization between renderer and the main threads on map resize.
* Regenerate location indicator mipmap on image change.
* Fix landmark visibility issues near tile borders.
* Fix elevated line depth occlusion issue in 2D mode.
* Fix Dynamic View Annotation position update for annotated geojson feature with `allowZElevate` to be true.
* Fix race condition between `setFeatureState` and `removeFeatureState` / `resetFeatureStates` resulting in feature state not being applied or removed.

## Dependencies
* Update gl-native to v11.7.0-beta.2 and common to v24.7.0-beta.2.

## Known issues
* Experimental `GeoJsonSource.autoMaxZoom` and `GeoJsonSourceState.autoMaxZoom` will return `null` value even after it's set.

# 11.6.0 August 16, 2024
## Breaking changes ⚠️
* [compose] Remove `StyleImage` constructor with `BitmapImage`, use `rememberStyleImage` composable function to build it instead.
* [compose] Move layer properties within `*Layer` composable functions to `*LayerState` classes, use the convenient method `*Layer(sourceState, layerId, init)` with trailing lambda for easier migration.
* [compose] Move `onClick` listener from last parameter to the second last parameter of `Annotation` and `AnnotationGroup` composable functions.
* [compose] Move properties within `*Annotation` and `*AnnotationGroup` composable functions to the new `*AnnotationState` and `*AnnotationGroupState` classes, use the convenient method `*Annotation(point, onClick, init)` and `*AnnotationGroup(annotations, annotationConfig, onClick, init)` with trailing lambda for easier migration.
* [compose] Replace color int and color string property types in `*Annotation` with compose `Color` type.
* [compose] Replace `PointAnnotation.iconImageBitmap` and `PointAnnotation.iconImage` with `PointAnnotationState.iconImage` with `IconImage` type, `IconImage` can be constructed with either a image id `String` or a `Bitmap`, and introduced `rememberIconImage` to build and remember a bitmap from `Painter` or from a drawable resource id.
* [compose] Introduce `StandardStyleConfigurationState` class to hold the configurations of `MapboxStandardStyle`, and move `lightPreset` config from `MapboxStandardStyle` to `StandardStyleConfigurationState`; consider using overload method `MapboxStandardStyle` with trailing init lambda for easier migration.
* Experimental `CustomRasterSourceOptions.Builder` now accepts `CustomRasterSourceClient` containing `CustomRasterSourceTileStatusChangedCallback` instead of `CustomRasterSourceTileStatusChangedCallback` interface directly.

## Features ✨ and improvements 🏁
* **[compose] Promote Compose Extension to stable.**
* [compose] Mark `MapState`, `MapViewportState`, `TerrainState`, light states and source states as `Stable` as they are internally backed by `MutableState`.
* [compose] Add more config options including `showPlaceLabels`, `showRoadLabels`, `showPointOfInterestLabels`, `showTransitLabels` and `font` to `StandardStyleConfigurationState`.
* [compose] Introduce `StyleImage` constructor with `Image` type, and add `rememberStyleImage` composable functions to create and remember `StyleImage`.
* [compose] Add extension function to `*AnnotationOptions` to handle compose `Color`, use it in `*AnnotationGroup` composable functions for convenience.
* [compose] Add style transition parameter in `GenericStyle`, `MapStyle` and `MapboxStandardStyle`.
* [compose] Extend `StandardStyleConfigurationState` with `theme: ThemeValue` and `show3dObjects: BooleanValue` properties.
* [compose] Introduce composable function `MapboxStandardSatelliteStyle` with dedicated `StandardSatelliteStyleConfigurationState`.
* Add new `Style.STANDARD_SATELLITE` style that combines updated satellite imagery and vector layers.
* Introduce new import configuration properties for `Style.STANDARD`: `theme`, `show3dObjects` which could be set with `Style.setStyleImportConfigProperty`.
* Modify `awaitCameraForCoordinates` extension function to use `MapCameraManagerDelegate` as receiver type.
* Modify `queryRenderedFeatures` and `querySourceFeatures` extension functions to use `MapFeatureQueryDelegate` as receiver type.
* Introduce asynchronous overloaded method `ViewAnnotationManager.cameraForAnnotations` better covering some corner cases.
* Make use of asynchronous `MapboxMap.cameraForCoordinates` in Mapbox overlay plugin better covering some corner cases.
* Mark synchronous methods `MapboxMap.cameraForCoordinates` and `ViewAnnotationManager.cameraForAnnotations` with `@MapboxDelicateApi`. Consider using asynchronous overloaded methods instead.
* Deprecate `MapboxMap.getDebug()`/`MapboxMap.setDebug()` in favour of `MapView.debugOptions` taking new enhanced enum `MapViewDebugOptions` as an argument.
* Introduce `MapViewDebugOptions.CAMERA` and `MapViewDebugOptions.PADDING` debug options to track current camera state and visualize camera paddings.
* Expose experimental `ClipLayer` to remove 3D data (fill extrusions, landmarks, instanced trees) and symbols.
* Enable r8 optimisations for all the Mapbox extensions and plugins in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
* Enable direct rendering into `CustomRasterSource` tiles.
* Introduce a new `allowZElevate` option in `ViewAnnotationOptions`. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.
* Support negative values for `CircleLayer.circleBlur` to render inner glow effect.
* Support for model-uris as properties in geojson model layers.
* Allow usage of the tile leveling schemes with maximum zoom exceeding 16.

## Bug fixes 🐞
* [compose] Fix minZoom/maxZoom not working for layers.
* [compose] Fix `java.lang.UnsupportedOperationException` when setting `textWritingMode` and `textVariableAnchor`.
* Fix compass view ignoring `enabled` option when it is set in `updateSettings()`.
* Fix background locations not received when unregistering other providers.
* Improve `linePattern` precision.
* Fix local glyph rasterization to ensure the correct Typeface is used.
* Fix `CustomRasterSource` rendering when camera shows antimeridian or multiple world copies.
* Fix elevated line occlusion issue in 2D mode.
* Fix blinking of layer as you are panning across the antimeridian.
* Fix `modelFrontCutoff` property for meshopt models.
* Align location provider default displacement for Android and Google providers.

## Dependencies
* Update gl-native to v11.6.0 and common to v24.6.0.


# 11.6.0-rc.1 August 02, 2024
## Features ✨ and improvements 🏁
* Support negative values for `CircleLayer.circleBlur` to render inner glow effect.
* Add new `Style.STANDARD_SATELLITE` style that combines updated satellite imagery and vector layers.
* Introduce new import configuration properties for `Style.STANDARD`: `theme`, `show3dObjects` which could be set with `Style.setStyleImportConfigProperty`.
* [compose] Extend `StandardStyleConfigurationState` with `theme: ThemeValue` and `show3dObjects: BooleanValue` properties.
* [compose] Introduce composable function `MapboxStandardSatelliteStyle` with dedicated `StandardSatelliteStyleConfigurationState`.

## Bug fixes 🐞
* Fix elevated line occlusion issue in 2D mode.

## Dependencies
* Update gl-native to v11.6.0-rc.1 and common to v24.6.0-rc.1.

## Known issues
* Experimental `ClipLayer`'s property `clipLayerTypes` is not updated in runtime. The fix is expected to land in stable 11.6.0.


# 11.5.1 July 25, 2024
## Bug fixes 🐞
* Fix local glyph rasterization to ensure the correct Typeface is used.
* Fix map freezing and huge memory consumption issue when using 3D models.
* Fix `CustomRasterSource` rendering when camera shows antimeridian or multiple world copies.
* Fix shadow rendering issues with `FillExtrusionLayer.fillExtrusionCutoffFadeRange`.

## Dependencies
* Update gl-native to v11.5.2.


# 11.6.0-beta.1 July 19, 2024
## Breaking changes ⚠️
* [compose] Remove `StyleImage` constructor with `BitmapImage`, use `rememberStyleImage` composable function to build it instead.
* [compose] Move layer properties within `*Layer` composable functions to `*LayerState` classes, use the convenient method `*Layer(sourceState, layerId, init)` with trailing lambda for easier migration.
* [compose] Move `onClick` listener from last parameter to the second last parameter of `Annotation` and `AnnotationGroup` composable functions.
* [compose] Move properties within `*Annotation` and `*AnnotationGroup` composable functions to the new `*AnnotationState` and `*AnnotationGroupState` classes, use the convenient method `*Annotation(point, onClick, init)` and `*AnnotationGroup(annotations, annotationConfig, onClick, init)` with trailing lambda for easier migration.
* [compose] Replace color int and color string property types in `*Annotation` with compose `Color` type.
* [compose] Replace `PointAnnotation.iconImageBitmap` and `PointAnnotation.iconImage` with `PointAnnotationState.iconImage` with `IconImage` type, `IconImage` can be constructed with either a image id `String` or a `Bitmap`, and introduced `rememberIconImage` to build and remember a bitmap from `Painter` or from a drawable resource id.
* [compose] Introduce `StandardStyleConfigurationState` class to hold the configurations of `MapboxStandardStyle`, and move `lightPreset` config from `MapboxStandardStyle` to `StandardStyleConfigurationState`; consider using overload method `MapboxStandardStyle` with trailing init lambda for easier migration.
* Experimental `CustomRasterSourceOptions.Builder` now accepts `CustomRasterSourceClient` containing `CustomRasterSourceTileStatusChangedCallback` instead of `CustomRasterSourceTileStatusChangedCallback` interface directly.

## Features ✨ and improvements 🏁
* **[compose] Promote Compose Extension to stable.**
* [compose] Mark `MapState`, `MapViewportState`, `TerrainState`, light states and source states as `Stable` as they are internally backed by `MutableState`.
* [compose] Add more config options including `showPlaceLabels`, `showRoadLabels`, `showPointOfInterestLabels`, `showTransitLabels` and `font` to `StandardStyleConfigurationState`.
* [compose] Introduce `StyleImage` constructor with `Image` type, and add `rememberStyleImage` composable functions to create and remember `StyleImage`.
* [compose] Add extension function to `*AnnotationOptions` to handle compose `Color`, use it in `*AnnotationGroup` composable functions for convenience.
* [compose] Add style transition parameter in `GenericStyle`, `MapStyle` and `MapboxStandardStyle`.
* Modify `awaitCameraForCoordinates` extension function to use `MapCameraManagerDelegate` as receiver type.
* Modify `queryRenderedFeatures` and `querySourceFeatures` extension functions to use `MapFeatureQueryDelegate` as receiver type.
* Introduce asynchronous overloaded method `ViewAnnotationManager.cameraForAnnotations` better covering some corner cases.
* Make use of asynchronous `MapboxMap.cameraForCoordinates` in Mapbox overlay plugin better covering some corner cases.
* Mark synchronous methods `MapboxMap.cameraForCoordinates` and `ViewAnnotationManager.cameraForAnnotations` with `@MapboxDelicateApi`. Consider using asynchronous overloaded methods instead.
* Deprecate `MapboxMap.getDebug()`/`MapboxMap.setDebug()` in favour of `MapView.debugOptions` taking new enhanced enum `MapViewDebugOptions` as an argument.
* Introduce `MapViewDebugOptions.CAMERA` and `MapViewDebugOptions.PADDING` debug options to track current camera state and visualize camera paddings.
* Expose experimental `ClipLayer` to remove 3D data (fill extrusions, landmarks, instanced trees) and symbols.
* Enable r8 optimisations for all the Mapbox extensions and plugins in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
* Align default displacement for Android and Google location providers.
* Enable direct rendering into `CustomRasterSource` tiles.
* Introduce a new `allowZElevate` option in `ViewAnnotationOptions`. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.

## Bug fixes 🐞
* [compose] Fix minZoom/maxZoom not working for layers.
* [compose] Fix `java.lang.UnsupportedOperationException` when setting `textWritingMode` and `textVariableAnchor`.
* Fix compass view ignoring `enabled` option when it is set in `updateSettings()`.
* Fix background locations not received when unregistering other providers.
* Improve `linePattern` precision.
* Fix local glyph rasterization to ensure the correct Typeface is used.
* Fix `CustomRasterSource` rendering when camera shows antimeridian or multiple world copies.

## Known issues
* `ClipLayer.clipLayerTypes` could not be updated with a layer setter. Layer has to be re-added to update it. This is expected to be fixed in v11.6.0-rc.1.

## Dependencies
* Update gl-native to v11.6.0-beta.1 and common to v24.6.0-beta.1.


# 11.4.2 July 17, 2024
## Bug fixes 🐞
* Fix local glyph rasterization to ensure the correct Typeface is used.

## Dependencies
* Update gl-native to v11.4.1.


# 11.5.0 July 05, 2024
## Breaking changes ⚠️
* [compose] Make `MapboxMap.onMapClickListener` and `MapboxMap.onMapLongClickListener` nullable and default to `null`.
* [compose] Rename `ImportConfig` to `ImportConfigs`.
* [compose] Move `MapboxMap.mapEvents` to events flows in `MapState`.
* [compose] Move `MapboxMap.gesturesSettings` to `MapState`.
* [compose] Move `Projection` to `generated` package and rename `default` values to `DEFAULT`.
* [compose] Rename `LightPreset` to `LightPresetValue`.
* [compose] Rename `TerrainState.disabled` to `TerrainState.DISABLED`.
* [compose] Replace terrain property `Exaggeration` with `DoubleValue`.
* [compose] Replace concrete `AtmosphereState` properties (e.g. `HighColor`, `HorizonBlend`, `SpaceColor`, etc) with generic ones: `ColorValue`, `DoubleValue`, `DoubleRangeValue`.
* [compose] Replace concrete Layer properties(e.g. `CircleColor`, `CircleOpacity`, `IconImage` etc) with generic ones: `ColorValue`, `DoubleValue`, `ImageValue` etc.
* [compose] Replace concrete `GeoJsonSourceState`, `ImageSourceState`, `RasterArraySourceState`, `RasterDemSourceState`, `RasterSourceState`, `SourceProperties`, `VectorSourceState` properties with generic ones (e.g. `BooleanValue`, `StringValue`, `LongValue`...).
* [compose] Move `GeoJSONData` outside of `generated` package.
* Remove experimental `CustomRasterSource.invalidateRegion` and `CustomRasterSource.invalidateTile` methods and change signature of `CustomRasterSource.setTileData`.
* Remove experimental `CustomRasterSource.tileCacheBudget` getter and setter. If needed, caching should be implemented on user's side.
* Remove experimental `MapboxMap` and `Style` methods: `invalidateStyleCustomRasterSourceTile`, `invalidateStyleCustomRasterSourceRegion`; change signature of `setStyleCustomRasterSourceTileData` method in `MapboxMap` and `Style`.

## Features ✨ and improvements 🏁
* [compose] Enable r8 optimisations of compose extension in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
* [compose] Introduce `StyleImport` composable API to be used in the `GenericStyle`, `MapStyle` and `MapboxStandardStyle`.
* [compose] Introduce `MapState` that can be hoisted to interact with map states, such as query rendered features, subscribe to map events and configure gestures settings.
* [compose] Expose `TerrainState` and `AtmosphereState` properties as `MutableState`.
* [compose] Introduce `AmbientLightState`, `DirectionalLightState`, `FlatLightState` as separate states; `LightsState` can be constructed by combination of `DirectionalLightState` and `AmbientLightState` or with `FlatLightState` to be set to the style.
* [compose] Avoid recreation of objects during recomposition of `GenericStyle`.
* Expose `LineJoin.NONE` which in conjunction with e.g. `linePattern` image allows to display repeated series of images along a line (e.g. dotted route line).
* Expose new function `DefaultLocationProvider.locationAnimatorOptions` to allow changing the value animator properties for puck position animation.
* Deprecate `MapboxMap.cameraForCoordinates` suspending extension function in favour of suspend `MapboxMap.awaitCameraForCoordinates`.
* Add min/max/default values to the docs for the generated properties.
* Add asynchronous `TileStore.create().clearAmbientCache()` API that can be used for clearing all ambient cache data.
* Expose experimental `lineZOffset` and `lineOcclusionOpacity` for `LineLayer`.
* Expose experimental `modelFrontCutoff` for `ModelLayer`.
* Expose experimental `iconOcclusionOpacity` and `textOcclusionOpacity` for `SymbolLayer` and `PointAnnotationManager`.
* Expose experimental `lineOcclusionOpacity` for `PolylineAnnotationManager`.
* Expose experimental `lineZOffset` for `PolylineAnnotation` and `PolylineAnnotationOptions`.
* Expose `clusterMinPoints` property for `GeoJSONSource` and for annotation's `ClusterOptions`.
* Remove explicit main thread locking when using `CircleAnnotationManager`, `PointAnnotationManager`, `PolygonAnnotationManager`, `PolylineAnnotationManager` and dragging the map that could lead to an ANR.
* Use dedicated thread for the tile store to increase performance.
* [compose] Expose `TerrainState` and `AtmosphereState` properties as `MutableState`.

## Bug fixes 🐞
* [compose] Fix the layer and annotation ordering by moving the annotations/layers according to the relative position in the node tree.
* [compose] Fix `No enum constant com.mapbox.maps.GeoJSONSourceData` crash when restoring app from background.
* Fix transitioning to `OverviewViewportState` in corner cases when the map is not yet ready for rendering(e.g. immediately after `MapView` is created).
* Set default minimum displacement between location updates to 0.1 meters in `DefaultLocationProvider`. Now this value is the same regardless of application using Google Play Services location library or not.
* Fix `PointAnnotationManager` and `CircleAnnotationManager` cluster layer id collision issue, so that multiple clusters can work at the same time.
* Fix `RasterParticleLayer.rasterParticleCount` and `RasterParticleLayer.defaultRasterParticleCount` returning `null`.
* Fix an issue allowing view annotation to be added even if its associated layer does not exist. Now, view annotation will function correctly once the layer is added.
* Fix feature queries for symbols above the horizon.
* Fix the rotated icon position during the globe transition.
* Fix Dynamic View Annotation (DVA) placement to place DVA in the center of the line geometry point, and try to avoid placing DVA near the lines' intersection point.
* Reduce the max raster-particle animation speed. It prevents particles from moving too fast, causing a visible clipping artifact at tile boundaries.
* `Snapshotter` methods throw `SnapshotterDestroyedException` if `destroy` was already called.
* Fix precision issues in `ColorUtils` methods.
* Fix NPE when parsing `rgb(...)` strings with `ColorUtils` methods.
* Fix `ScaleBar.useContinuousRendering` not being in sync with `ScaleBar.settings.useContinuousRendering`.
* Fix accuracy ring related location settings updates not being rendered immediately.
* Fix a crash for Draco compressed 3D models whose geometry share indices.
* Fix tile rendering errors when the composited source tile components are overscaled.
* Fix transparent areas in overlapped polygons of MultiPolygon feature.
* Fix crash on multiple style pack loading operations.

## Dependencies
* Update gl-native to v11.5.1 and common to v24.5.0.


# 11.5.0-rc.1 June 20, 2024
## Breaking changes ⚠️
* [compose] Make `MapboxMap.onMapClickListener` and `MapboxMap.onMapLongClickListener` nullable and default to `null`.
* [compose] Rename `ImportConfig` to `ImportConfigs`.
* [compose] Move `MapboxMap.mapEvents` to events flows in `MapState`.
* [compose] Move `MapboxMap.gesturesSettings` to `MapState`.
* Remove experimental `CustomRasterSource.invalidateRegion` and `CustomRasterSource.invalidateTile` methods and change signature of `CustomRasterSource.setTileData`.
* Remove experimental `CustomRasterSource.tileCacheBudget` getter and setter. If needed, caching should be implemented on user's side.
* Remove experimental `MapboxMap` and `Style` methods: `invalidateStyleCustomRasterSourceTile`, `invalidateStyleCustomRasterSourceRegion`; change signature of `setStyleCustomRasterSourceTileData` method in `MapboxMap` and `Style`.

## Features ✨ and improvements 🏁
* [compose] Introduce `StyleImport` composable API to be used in the `GenericStyle`, `MapStyle` and `MapboxStandardStyle`.
* [compose] Introduce `MapState` that can be hoisted to interact with map states, such as query rendered features, subscribe to map events and configure gestures settings.
* Deprecate `MapboxMap.cameraForCoordinates` suspending extension function in favour of suspend `MapboxMap.awaitCameraForCoordinates`.
* Add min/max/default values to the docs for the generated properties.
* Add asynchronous `TileStore.create().clearAmbientCache()` API that can be used for clearing all ambient cache data.
* Expose experimental `lineZOffset` and `lineOcclusionOpacity` for `LineLayer`.
* Expose experimental `modelFrontCutoff` for `ModelLayer`.
* Expose experimental `iconOcclusionOpacity` and `textOcclusionOpacity` for `SymbolLayer` and `PointAnnotationManager`.
* Expose experimental `lineOcclusionOpacity` for `PolylineAnnotationManager`.
* Expose experimental `lineZOffset` for `PolylineAnnotation` and `PolylineAnnotationOptions`.

## Bug fixes 🐞
* Fix `RasterParticleLayer.rasterParticleCount` and `RasterParticleLayer.defaultRasterParticleCount` returning `null`.
* Fix the rotated icon position during the globe transition.
* Fix Dynamic View Annotation (DVA) placement to place DVA in the center of the line geometry point, and try to avoid placing DVA near the lines' intersection point.
* Reduce the max raster-particle animation speed. It prevents particles from moving too fast, causing a visible clipping artifact at tile boundaries.

## Dependencies
* Update gl-native to v11.5.0-rc.1 and common to v24.5.0-rc.1.


# 11.5.0-beta.1 June 11, 2024
## Breaking changes ⚠️
* [compose] Move `Projection` to `generated` package and rename `default` values to `DEFAULT`.
* [compose] Rename `LightPreset` to `LightPresetValue`.
* [compose] Rename `TerrainState.disabled` to `TerrainState.DISABLED`.
* [compose] Replace terrain property `Exaggeration` with `DoubleValue`.
* [compose] Replace concrete `AtmosphereState` properties (e.g. `HighColor`, `HorizonBlend`, `SpaceColor`, etc) with generic ones: `ColorValue`, `DoubleValue`, `DoubleRangeValue`.
* [compose] Replace concrete Layer properties(e.g. `CircleColor`, `CircleOpacity`, `IconImage` etc) with generic ones: `ColorValue`, `DoubleValue`, `ImageValue` etc.
* [compose] Replace concrete `GeoJsonSourceState`, `ImageSourceState`, `RasterArraySourceState`, `RasterDemSourceState`, `RasterSourceState`, `SourceProperties`, `VectorSourceState` properties with generic ones (e.g. `BooleanValue`, `StringValue`, `LongValue`...).
* [compose] Move `GeoJSONData` outside of `generated` package.

## Features ✨ and improvements 🏁
* Expose `clusterMinPoints` property for `GeoJSONSource` and for annotation's `ClusterOptions`.
* Remove explicit main thread locking when using `CircleAnnotationManager`, `PointAnnotationManager`, `PolygonAnnotationManager`, `PolylineAnnotationManager` and dragging the map that could lead to an ANR.
* Use dedicated thread for the tile store to increase performance.
* [compose] Expose `TerrainState` and `AtmosphereState` properties as `MutableState`.
* [compose] Introduce `AmbientLightState`, `DirectionalLightState`, `FlatLightState` as separate states; `LightsState` can be constructed by combination of `DirectionalLightState` and `AmbientLightState` or with `FlatLightState` to be set to the style.
* [compose] Avoid recreation of objects during recomposition of `GenericStyle`.
* Expose `TerrainState` and `AtmosphereState` properties as `MutableState`.

## Bug fixes 🐞
* [compose] Fix `No enum constant com.mapbox.maps.GeoJSONSourceData` crash when restoring app from background.
* `Snapshotter` methods throw `SnapshotterDestroyedException` if `destroy` was already called.
* Fix precision issues in `ColorUtils` methods.
* Fix NPE when parsing `rgb(...)` strings with `ColorUtils` methods.
* Fix `ScaleBar.useContinuousRendering` not being in sync with `ScaleBar.settings.useContinuousRendering`.
* Fix accuracy ring related location settings updates not being rendered immediately.
* Fix a crash for Draco compressed 3D models whose geometry share indices.
* Fix tile rendering errors when the composited source tile components are overscaled.
* Fix transparent areas in overlapped polygons of MultiPolygon feature.
* Fix crash on multiple style pack loading operations.

## Dependencies
* Update gl-native to v11.5.0-beta.1 and common to v24.5.0-beta.4.


# 11.4.1 June 03, 2024
## Bug fixes 🐞
* Fix an issue that `getLight` API always returns null.


# 11.4.0 May 22, 2024
## Breaking changes ⚠️
* [compose] Remove `locationComponentSettings` from `MapboxMap` composable function, `MapEffect` with location component API should be used instead. More compose-friendly location component API will be introduced in future releases.
* [compose] Remove `TileCacheBudget(com.mapbox.maps.TileCacheBudget)` constructor and introduce `TileCacheBudget(TileCacheBudgetInMegabytes)` and `TileCacheBudget(TileCacheBudgetInTiles)` constructor instead.
* [compose] Remove `layoutParams` from `ViewAnnotation` composable function, the internal `ComposeView` wrapping the `ViewAnnotation.content` will always use `WRAP_CONTENT`; In case of tests where the assertion happens before the measure, user can force the content size using `ViewAnnotationOptions.width/height` APIs.
* [compose] Constructor in `PromoteId` data class from compose now takes `PropertyName` and optional `SourceId` instead of itself.
* [compose] Use new `SlotsContent` instead of generic `Map` to handle the style content for slots. Introduced `slotsContent` builder function.
* [compose] Use new `LayerPositionedContent` instead of generic `Map` to handle the layer positioned style content. Introduced `layerPositionedContent` builder function.
* [compose] Use new `StyleImportsConfig` instead of generic `Map` to handle the style import configurations. Introduced `styleImportsConfig` builder function.
* [compose] Move `MapboxStandardStyle` to a different package and introduce `LightPreset` with available presets as constants.
* [compose] `MapViewportState` properties `cameraState`, `mapViewportStatusChangedReason` and `mapViewportStatus` are null when the state is not attached to a map.
* [compose] `MapViewportState` constructor parameter has been renamed to `initialCameraState`.

## Features ✨ and improvements 🏁
* [compose] Add `AtmosphereState` parameter to `GenericStyle` composable function.
* [compose] Introduce `Projection` and `AtmosphereState` API on `MapStyle` and `MapboxStandardStyle`.
* [compose] Add `StyleImage` to construct following image layer properties: `IconImage`, `FillPattern`, `LinePattern`, `BearingImage`, `ShadowImage`, `TopImage`.
* [compose] Add `ModelId` constructor to add model id and uri.
* [compose] Add `TerrainState` parameter to `GenericStyle`, `MapStyle` and `MapboxStandardStyle` composable functions.
* Introduce `addStyleImportFromJSON`, `addStyleImportFromURI`, `updateStyleImportWithJSON`, `updateStyleImportWithURI`, `moveStyleImport` APIs to `MapboxMap` and `Style`.
* Handle updating geo-json data exceptions and propagate them to `MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback)`.
* Introduce `SlotLayer` in Style DSL.
* Add statistics for graphics pipeline program creation.
* Enable `raster-elevation` for tiled raster sources.
* Improve tile processing performance by filtering out tiny polygon holes.
* Reduce number of evaluations of step expression in `line-gradient` properties.
* Add support for `line-trim-offset` with `line-pattern`.
* Enable two dimensional data handling in Mapbox Raster tiles.
* Trim zoom ranges for the style at tileset descriptor resolving.
* Extend `SymbolLayer.iconColorSaturation` range from [0, 1] to [-1, 1] and change default value to 0.
* Reduce time spent on model layer re-evaluation during light change.
* Expose experimental `Style.styleSlots` allowing to get the ordered list of slots.
* Deprecate `MapboxMap.cameraForCoordinateBounds`, `MapboxMap.cameraForGeometry` and some synchronous overloaded `MapboxMap.cameraForCoordinates` in favour of single synchronous, asynchronous and suspend `MapboxMap.cameraForCoordinates`. Synchronous `MapboxMap.cameraForCoordinates` returns empty camera (could be checked with `CameraOptions.isEmpty`) if the map's size is not yet calculated.
* Add feature metrics collection. Mapbox Maps SDK collects anonymous data about which of its features are used. Mapbox uses this data to understand how our software is being used and prioritize plans to improve it. These metrics tell us whether a feature has been used ("flyTo was called"), but not how ("flyTo was called with this position"). No user-level metrics or identifiers are collected as part of this initiative.
* Avoid locking main thread when it is not needed on map destroy.
* Add experimental `MapView.setSnapshotLegacyMode` function to help avoiding `MapView.snapshot` native crash on some Samsung devices running Android 14.
* Add experimental `RasterParticleLayer` in Style DSL and Compose.
* Add `mapView.location.slot` API to assign a slot for the location indicator.

## Bug fixes 🐞
* [compose] Fix an issue with `rememberGeoJsonSourceState`, where the `Value` and `GeoJsonData` can not be serialised.
* [compose] Remember default `ComposeMapInitOptions` and `GesturesSettings` so that we don't reconstruct these classes when `MapboxMap` recomposes.
* [compose] Filter relevant events for `ViewAnnotation.onUpdatedListener` and skip events from other view annotations.
* [compose] Do not consume tap event for `Compass`, so that user set `clickable` can be processed.
* [compose] Fix slots and layerposition content not being cleaned up during recomposition.
* [compose] Propagate onRemoved and onClear to children nodes of MapStyleNode to do proper clean up.
* [compose] Fix lost style import config during style switch by waiting for style load event.
* [compose] Make the initial compass visibility to be false, so the compass wouldn't show and hide initially if the user is facing north.
* [compose] Fix `java.io.NotSerializableException: com.mapbox.bindgen.Value` for SourceState.
* [compose] Queue viewport operations when the `MapViewportState` is no yet attached to the map, to avoid losing events.
* Fix `Snapshotter.cameraForCoordinates` arguments `padding`, `bearing` and `pitch` to be nullable.
* Fix config with format expression that contains text property overrides.
* Make non-vector tile parsing cancellable.
* Move cutoff opacity calculation to CPU side.
* Fix icon/pattern missing issue if the missing image is only added after map gets rendered.
* Introduce a dedicated thread for 3d landmarks parsing.
* Fix crash on start when no free disk space left.
* Fix TilePrefetch for GeoJSON sources.
* Fix snapshotter latency when 3d tiles involved.
* Fix renderer destruction being blocked by 3d models parsing completion.
* Fix memory leak when camera animations are skipped.
* Fix Mapbox attribution and telemetry links not opening in a browser.
* Fix incorrect size of the tile memory budget for vector tiles when the budget is set in megabytes.
* Fix `LogoView.logoEnabled` not being in sync with `MapView.logo.enabled` state.
* Fix raster-particle not being visible on some Android devices.
* Fixed invalid circle order while using `circle-sort-key`.
* Fixed duplicate circles in static viewport mode.
* Fixed a crash during style change.

## Dependencies
* Update gl-native to v11.4.0 and common to v24.4.0.


# 11.4.0-rc.2 May 15, 2024
## Breaking changes ⚠️
* [compose] `MapViewportState` properties `cameraState`, `mapViewportStatusChangedReason` and `mapViewportStatus` are null when the state is not attached to a map.
* [compose] `MapViewportState` constructor parameter has been renamed to `initialCameraState`.

## Bug fixes 🐞
* [compose] Queue viewport operations when the `MapViewportState` is no yet attached to the map, to avoid losing events.
* Fix `LogoView.logoEnabled` not being in sync with `MapView.logo.enabled` state.
* Fix raster-particle not being visible on some Android devices.

## Dependencies
* Update gl-native to v11.4.0-rc.2 and common to v24.4.0-rc.2.


# 11.4.0-rc.1 May 08, 2024
## Features ✨ and improvements 🏁
* [compose] Add `StyleImage` to construct following image layer properties: `IconImage`, `FillPattern`, `LinePattern`, `BearingImage`, `ShadowImage`, `TopImage`.
* [compose] Add `ModelId` constructor to add model id and uri.
* [compose] Add `TerrainState` parameter to `GenericStyle`, `MapStyle` and `MapboxStandardStyle` composable functions.
* Add experimental `RasterParticleLayer` in Style DSL and Compose.
* Add `mapView.location.slot` API to assign a slot for the location indicator.

## Bug fixes 🐞
* Fix memory leak when camera animations are skipped.
* Fix Mapbox attribution and telemetry links not opening in a browser.
* Fix incorrect size of the tile memory budget for vector tiles when the budget is set in megabytes.
* Fix known issue from 11.4.0-beta.1 where setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering.

## Dependencies
* Update gl-native to v11.4.0-rc.1 and common to v24.4.0-rc.1.


# 11.4.0-beta.3 May 06, 2024
## Features ✨ and improvements 🏁
* Add experimental `MapView.setSnapshotLegacyMode` function to help avoiding `MapView.snapshot` native crash on some Samsung devices running Android 14.

## Bug fixes 🐞
* [compose] Make the initial compass visibility to be false, so the compass wouldn't show and hide initially if the user is facing north.
* [compose] Fix `java.io.NotSerializableException: com.mapbox.bindgen.Value` for SourceState.

## Dependencies
* Update common to v24.4.0-beta.3.


# 11.4.0-beta.2 April 30, 2024
## Features ✨ and improvements 🏁
* Avoid locking main thread when it is not needed on map destroy.

## Bug fixes 🐞
* Fix TilePrefetch for GeoJSON sources.
* Fix snapshotter latency when 3d tiles involved.
* Fix renderer destruction being blocked by 3d models parsing completion.

## Dependencies
* Update gl-native to v11.4.0-beta.2 and common to v24.4.0-beta.2.


# 11.4.0-beta.1 April 29, 2024
## Breaking changes ⚠️
* [compose] Remove `locationComponentSettings` from `MapboxMap` composable function, `MapEffect` with location component API should be used instead. More compose-friendly location component API will be introduced in future releases.
* [compose] Remove `TileCacheBudget(com.mapbox.maps.TileCacheBudget)` constructor and introduce `TileCacheBudget(TileCacheBudgetInMegabytes)` and `TileCacheBudget(TileCacheBudgetInTiles)` constructor instead.
* [compose] Remove `layoutParams` from `ViewAnnotation` composable function, the internal `ComposeView` wrapping the `ViewAnnotation.content` will always use `WRAP_CONTENT`; In case of tests where the assertion happens before the measure, user can force the content size using `ViewAnnotationOptions.width/height` APIs.
* [compose] Constructor in `PromoteId` data class from compose now takes `PropertyName` and optional `SourceId` instead of itself.
* [compose] Use new `SlotsContent` instead of generic `Map` to handle the style content for slots. Introduced `slotsContent` builder function.
* [compose] Use new `LayerPositionedContent` instead of generic `Map` to handle the layer positioned style content. Introduced `layerPositionedContent` builder function.
* [compose] Use new `StyleImportsConfig` instead of generic `Map` to handle the style import configurations. Introduced `styleImportsConfig` builder function.
* [compose] Move `MapboxStandardStyle` to a different package and introduce `LightPreset` with available presets as constants.

## Features ✨ and improvements 🏁
* [compose] Add `AtmosphereState` parameter to `GenericStyle` composable function.
* [compose] Introduce `Projection` and `AtmosphereState` API on `MapStyle` and `MapboxStandardStyle`.
* Introduce `addStyleImportFromJSON`, `addStyleImportFromURI`, `updateStyleImportWithJSON`, `updateStyleImportWithURI`, `moveStyleImport` APIs to `MapboxMap` and `Style`.
* Handle updating geo-json data exceptions and propagate them to `MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback)`.
* Introduce `SlotLayer` in Style DSL.
* Add statistics for graphics pipeline program creation.
* Enable `raster-elevation` for tiled raster sources.
* Improve tile processing performance by filtering out tiny polygon holes.
* Reduce number of evaluations of step expression in `line-gradient` properties.
* Add support for `line-trim-offset` with `line-pattern`.
* Enable two dimensional data handling in Mapbox Raster tiles.
* Trim zoom ranges for the style at tileset descriptor resolving.
* Extend `SymbolLayer.iconColorSaturation` range from [0, 1] to [-1, 1] and change default value to 0.
* Reduce time spent on model layer re-evaluation during light change.
* Expose experimental `Style.styleSlots` allowing to get the ordered list of slots.
* Deprecate `MapboxMap.cameraForCoordinateBounds`, `MapboxMap.cameraForGeometry` and some synchronous overloaded `MapboxMap.cameraForCoordinates` in favour of single synchronous, asynchronous and suspend `MapboxMap.cameraForCoordinates`. Synchronous `MapboxMap.cameraForCoordinates` returns empty camera (could be checked with `CameraOptions.isEmpty`) if the map's size is not yet calculated.

## Bug fixes 🐞
* [compose] Fix an issue with `rememberGeoJsonSourceState`, where the `Value` and `GeoJsonData` can not be serialised.
* [compose] Remember default `ComposeMapInitOptions` and `GesturesSettings` so that we don't reconstruct these classes when `MapboxMap` recomposes.
* [compose] Filter relevant events for `ViewAnnotation.onUpdatedListener` and skip events from other view annotations.
* [compose] Do not consume tap event for `Compass`, so that user set `clickable` can be processed.
* [compose] Fix slots and layerposition content not being cleaned up during recomposition.
* [compose] Propagate onRemoved and onClear to children nodes of MapStyleNode to do proper clean up.
* [compose] Fix lost style import config during style switch by waiting for style load event.
* Fix `Snapshotter.cameraForCoordinates` arguments `padding`, `bearing` and `pitch` to be nullable.
* Fix config with format expression that contains text property overrides.
* Make non-vector tile parsing cancellable.
* Move cutoff opacity calculation to CPU side.
* Fix icon/pattern missing issue if the missing image is only added after map gets rendered.
* Introduce a dedicated thread for 3d landmarks parsing.
* Fix crash on start when no free disk space left.

## Dependencies
* Update gl-native to v11.4.0-beta.1 and common to v24.4.0-beta.1.

## Known issues
* In v11.4.0-beta.1, setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering. This issue will be resolved in v11.4.0-rc.1.
* In v11.4.0-beta.1, the map destroy might block main thread for short amount of time and cause UI to freeze. This issue will be resolved in v11.4.0-beta.2.


# 11.3.1 April 26, 2024
## Features ✨ and improvements 🏁
* Reduce time spent on model layer re-evaluation during light change.

## Bug fixes 🐞
* Make non-vector tile parsing cancellable.
* Introduce a dedicated thread for 3d landmarks parsing.
* Fix TilePrefetch for GeoJSON sources.

## Dependencies
* Update gl-native to v11.3.2.


# 11.3.0 April 11, 2024
## Breaking changes ⚠️
* [compose] Introduce experimental `ComposeMapInitOptions` and remove `mapInitOptionsFactory`.
* [compose] Replace experimental `MapboxMap.compassSettings`, `MapboxMap.scaleBarSettings`, `MapboxMap.logoSettings`, `MapboxMap.attributionSettings` with composable functions in dedicated scopes: `MapCompassScope.Compass()`, `MapScaleBarScope.ScaleBar()`, `MapLogoScope.Logo()`, `MapAttributionScope.Attribution()`.

## Features ✨ and improvements 🏁
* [compose] Add layerPosition support in `GenericStyle` composable function.
* [compose] Add layer transition properties.
* [compose] Add `contentPadding` to map ornament composable functions(e.g. `Compass`, `Logo`, `Attribution`, `ScaleBar`).
* [compose] Introduce experimental `MapStyle`, `MapboxStandardStyle`, `GenericStyle` composable functions to work with the map style.
* [compose] Introduce experimental layer composable functions to insert layers to the map.
* [compose] Introduce experimental source states to work with layer composable functions.
* [compose] Add map projection support in `GenericStyle` composable function.
* Expose `MapInitOptions.mapName` (`mapbox_mapName` in XML) property allowing to set the custom name which will be appended to map render related logs.
* Add Attribution and Telemetry pop-up dialogs and compass view content description translations for Arabic, Bulgarian, Catalan, Chinese Simplified, Chinese Traditional, Czech, Danish, Dutch, French, Galician, German, Hebrew, Italian, Japanese, Korean, Lithuanian, Norwegian, Polish, Belarusian, Russian, Spanish, Swedish, Ukranian and Vietnamese.
* Perform faster landmark parsing by switching tinygltf in favor of cgltf.
* Use mipmap with pattern images.
* Add `SdkInformationQuery` to expose sdk version information.
* Enable `TileStore` delta updates by default for Maps domain.
* Add `TileStore.estimateTileRegion` API for estimating Tile Region downloads and storage size.

## Bug fixes 🐞
* [compose] Fix a bug introduced in `11.3.0-beta.1` where AnnotationGroup items updates were skipped.
* [compose] Fix `ViewAnnotation` not cleared when it leaves composition.
* [compose] Fix the `IndexOutOfBoundsException` because of `RootNode` of `MapboxMap` node tree being shared across multiple maps.
* Resolve the data race by ensuring that when terrain is enabled, the transform state is updated with the correct elevation instance.
* Fix offline composited tiles fetching when the request tile zoom level is above maximum zoom for one of the composed tile packs but below maximum zoom level for another one.
* Fix override of line-gradient textures when fill-extrusion effects are used on terrain.
* Return `ViewAnnotationOptions.Builder` when calling `ViewAnnotationOptions.Builder.annotationAnchor` extension function.
* Immediately add annotations and location component to the map instead of waiting for style load events.
* Fix a bug where specifying a large negative value for padding in `MapboxMap.camera*()` methods resulted in the returned zoom value being NaN.
* Fix location indicator models rendering issue with globe projection.
* Offline: composite higher level tiles from their parents, when a non-standard [tile pack zoom ranges scheme](https://docs.mapbox.com/android/maps/guides/offline/#tile-count-granularity) is used.
* Use bigger http buffers to avoid reference table overflow.
* Fix attribution links not opening in some scenarios.
* Fix attribution and telemetry dialogs not respecting current theme.
* Fix map being pixelated on some devices when `ContextMode.SHARED` is used (e.g. in AndroidAuto extension).
* Fix map being black on some zoom levels when `ContextMode.SHARED` is used (e.g. in AndroidAuto extension).
* Fix incorrect widget position and scale when resizing the drawing surface.
* Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom.
* Fix snapshotter race conditions to ensure new request could effectively trigger map rendering.
* Fix raster array band updates glitches during the camera zoom animation.
* Reload vector source tiles when language or worldview setting is changed.
* Apply config expression to atmosphere properties.
* Fix map freezing when using `queryRenderedFeatures` with 3d models in mercator projection.
* Reduce time spent on line gradient updates on the render thread.
* Fix network reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected.
* Fix wrong network reachability statuses.
* Fix double `LocationServiceObserver.onAvailabilityChanged` callback trigger.
* Avoid bringing Kotlin 1.8 as transitive dependency, Maps SDK should use Kotlin 1.7.20.

## Dependencies
* Update gl-native to v11.3.0 and common to v24.3.1.
* Update Mapbox Base Android library to [v0.11.0](https://github.com/mapbox/mapbox-base-android/releases/tag/v0.11.0).

# 11.3.0-rc.1 March 28, 2024
##  Known Issues ⚠️
* The tiles fetching from the offline database is malfunctioning for the composited sources. Setting `com.mapbox.maps.experimental.offline_vt_compositing` runtime flag to `false` resolves this issue:
```Kotlin
val settings = SettingsServiceFactory.getInstance(SettingsServiceStorageType.NON_PERSISTENT)
settings.set("com.mapbox.maps.experimental.offline_vt_compositing", Value.valueOf(false))
```

## Features ✨ and improvements 🏁
* [compose] Add layerPosition support in `GenericStyle` composable function.
* Expose `MapInitOptions.mapName` (`mapbox_mapName` in XML) property allowing to set the custom name which will be appended to map render related logs.
* [compose] Add layer transition properties.
* [compose] Add `contentPadding` to map ornament composable functions(e.g. `Compass`, `Logo`, `Attribution`, `ScaleBar`).

## Bug fixes 🐞
* Return `ViewAnnotationOptions.Builder` when calling `ViewAnnotationOptions.Builder.annotationAnchor` extension function.
* [compose] Fix the `IndexOutOfBoundsException` because of `RootNode` of `MapboxMap` node tree being shared across multiple maps.
* Immediately add annotations and location component to the map instead of waiting for style load events.
* Fix a bug where specifying a large negative value for padding in `MapboxMap.camera*()` methods resulted in the returned zoom value being NaN.
* Fix location indicator models rendering issue with globe projection.
* Offline: composite higher level tiles from their parents, when a non-standard [tile pack zoom ranges scheme](https://docs.mapbox.com/android/maps/guides/offline/#tile-count-granularity) is used.
* Use bigger http buffers to avoid reference table overflow.
* Fix a crash in `MapView.snapshot` happening on specific devices.

## Dependencies
* Update gl-native to v11.3.0-rc.1 and common to v24.3.0-rc.1.


# 11.2.2 March 27, 2024
## Features ✨ and improvements 🏁
* Expose `MapInitOptions.mapName` (`mapbox_mapName` in XML) property allowing to set the custom name which will be appended to map render related logs.

## Dependencies
* Update gl-native to v11.2.2 and common to v24.2.3.

# 11.2.1 March 15, 2024
## Bug fixes 🐞
* Apply config expression to atmosphere properties.
* Fix map freezing when using `queryRenderedFeatures` with 3d models in mercator projection.

## Dependencies
* Update gl-native to v11.2.1.

# 11.3.0-beta.1 March 14, 2024
## Breaking changes ⚠️
* [compose] Replace experimental `MapboxMap.compassSettings`, `MapboxMap.scaleBarSettings`, `MapboxMap.logoSettings`, `MapboxMap.attributionSettings` with composable functions in dedicated scopes: `MapCompassScope.Compass()`, `MapScaleBarScope.ScaleBar()`, `MapLogoScope.Logo()`, `MapAttributionScope.Attribution()`.

## Features ✨ and improvements 🏁
* Added Attribution and Telemetry pop-up dialogs and compass view content description translations for Arabic, Bulgarian, Catalan, Chinese Simplified, Chinese Traditional, Czech, Danish, Dutch, French, Galician, German, Hebrew, Italian, Japanese, Korean, Lithuanian, Norwegian, Polish, Belarusian, Russian, Spanish, Swedish, Ukranian and Vietnamese.
* Faster landmark parsing by switching tinygltf in favor of cgltf.
* Use mipmap with pattern images .
* Add `SdkInformationQuery` to expose sdk version information.
* Enable `TileStore` delta updates by default for Maps domain.
* Add `TileStore.estimateTileRegion` API for estimating Tile Region downloads and storage size.
* [compose] Introduce experimental `MapStyle`, `MapboxStandardStyle`, `GenericStyle` composable functions to work with the map style.
* [compose] Added experimental layer and source composable functions to insert layer/sources to the map.
* [compose] Improve annotation group update speed.

## Bug fixes 🐞
* [compose] Fix `ViewAnnotation` not cleared when it leaves composition.
* Fix attribution links not opening in some scenarios.
* Fix attribution and telemetry dialogs not respecting current theme.
* Fix map being pixelated on some devices when `ContextMode.SHARED` is used (e.g. in AndroidAuto extension).
* Fix incorrect widget position and scale when resizing the drawing surface.
* Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom.
* Fix snapshotter race conditions to ensure new request could effectively trigger map rendering.
* Fix raster array band updates glitches during the camera zoom animation.
* Reload vector source tiles when language or worldview setting is changed.
* Apply config expression to atmosphere properties.
* Fix map freezing when using `queryRenderedFeatures` with 3d models in mercator projection.
* Reduce time spent on line gradient updates on the render thread.
* Fix network reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected.
* Fix wrong network reachability statuses.
* Fix double `LocationServiceObserver.onAvailabilityChanged` callback trigger.
* Avoid bringing Kotlin 1.8 as transitive dependency, Maps SDK should use Kotlin 1.7.20.

## Dependencies
* Update gl-native to v11.3.0-beta.1 and common to v24.3.0-beta.1.


# 11.2.0 February 29, 2024
## Features ✨ and improvements 🏁
* Introduce better way of SDK initialization to avoid `java.lang.UnsatisfiedLinkError` exception on process startup. If the native library is still not found when actual Mapbox API is called, meaningful `MapboxInitializerException` is thrown and could be caught and processed on user's side.
* Introduce `MapboxMap.getCenterAltitudeMode` API.
* Add `useShortestPath` option to `CameraAnimationPlugin.createCenterAnimator`, when enabled, shortest path will be applied when the start and end camera  center is across the antimeridian, for example from -170 to 170 longitude. Defaults to true.
* Introduce `SymbolLayer.iconColorSaturation` API.
* Introduce experimental `RasterLayer.rasterElevation` API.
* Introduce experimental `MapboxMap.startPerformanceStatisticsCollection` / `MapboxMap.stopPerformanceStatisticsCollection` APIs allowing to start / stop collecting map rendering performance statistics.
* Introduce `GeoJsonSource.tileCacheBudget`, `RasterSource.tileCacheBudget`, `RasterDemSource.tileCacheBudget`, `RasterArraySource.tileCacheBudget`, `VectorSource.tileCacheBudget`, `CustomGeometrySource.tileCacheBudget`, `CustomRasterSource.tileCacheBudget`.
* Skip unneeded layers properties re-evaluation on zoom change.
* Add the possibility to use constant expressions for `model-emissive-strength` when rendering 3D model layers using 2D sources.
* Introduce static `HttpServiceFactory.setMaxRequestsPerHost` API.
* `TileStoreOptions.DiskQuota` is now an abort threshold for tilestore size. When we have more than this amount of bytes stored, new downloads will fail. `Tilestore` starts to evict tiles with closest expiration date 50Mb (or 10% of DiskQuota, whatever is smaller) before this abort threshold is reached.
* Speedup preparing tiled sources for rendering.
* Uploading model resources to GPU in continuous map mode is now limited by fixed time per frame.
* Modify `FillExtrusionLayer.fillExtrusionCutoffFadeRange` to scale down and remove buildings in a staggered fashion, instead of fading opacity.
* [compose] Introduce `DisposableMapEffect` API.
* [compose] Add default value for `MapViewportState.transitionToFollowPuckState.followPuckViewportStateOptions`.

## Bug fixes 🐞
* Retain previous `CenterAltitudeMode` after gestures are finished.
* Avoid marking whole `LayerDsl` as experimental when only a part of the layer properties are experimental.
* Fix R8 error due to missing class `com.tobrun.datacompat.annotation.Default`.
* `EaseTo` and `MoveBy` camera animation and `DefaultViewportTransition` now will use shortest path when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude.
* Remove extra image padding from text shaping offset.
* Address crashes on certain Android devices by disabling the texture pool.
* Fix elevated rasters with coordinates not aligned to the longitude/latitude grid.
* Fix a bug that was causing absence of `MapLoaded` event and never ending background task processing.
* Fix a bug that heatmap layer wasn't updating visuals after feature state change.
* Fix a bug where scientific notation is not supported when parse JSON numbers to `Value`.
* Fix a crash occurring when clicking on the "Telemetry settings" option in the attribution dialog when not using the `AppCompat` theme.
* Fix `ModelLayer.modelCutoffFadeRange` calculation on low zoom levels.
* Fix `RasterArray` rendering on Android.
* Fix rare null pointer dereference crash.
* Fix a bug with disappearing models during light changes.
* Fix rendering artifacts on long fill outlines on pitched map view.
* Fix style parsing when the style and import's urls are both empty.
* Fix config expression evaluation if the expected type is formatted but the actual value is string.
* Fix not taking `line-trim-offset` into account for Dynamic View Annotation placement.
* Fix issue that View Annotation stays visible when the associated layer's visibility is none.
* Fix camera framing on globe with padding.
* [compose] Fix a warning that using UI composable where Mapbox Map composable is expected.
* [compose] Fix losing some location component settings during wrapping.

## Dependencies
* Update gl-native to v11.2.0 and common to v24.2.0.
* Upgrade to [Kotlin Data compat v0.8.0](https://github.com/tobrun/kotlin-data-compat/releases/tag/v0.8.0).


# 11.2.0-rc.1 February 15, 2024
## Features ✨ and improvements 🏁
* [compose] Introduce `DisposableMapEffect` API.
* Speedup preparing tiled sources for rendering.
* Uploading model resources to GPU in continuous map mode is now limited by fixed time per frame.
* Modify `FillExtrusionLayer.fillExtrusionCutoffFadeRange` to scale down and remove buildings in a staggered fashion, instead of fading opacity.

## Bug fixes 🐞
* [compose] Fix a warning that using UI composable where Mapbox Map composable is expected.
* Fix a crash occurring when clicking on the "Telemetry settings" option in the attribution dialog when not using the `AppCompat` theme.
* Fix `ModelLayer.modelCutoffFadeRange` calculation on low zoom levels.
* Fix `RasterArray` rendering on Android.
* Fix rare null pointer dereference crash.

## Dependencies
* Update gl-native to v11.2.0-rc.1 and common to v24.2.0-rc.2.


# 11.2.0-beta.1 February 01, 2024
## Features ✨ and improvements 🏁
* Introduce better way of SDK initialization to avoid `java.lang.UnsatisfiedLinkError` exception on process startup. If the native library is still not found when actual Mapbox API is called, meaningful `MapboxInitializerException` is thrown and could be caught and processed on user's side.
* Introduce `MapboxMap.getCenterAltitudeMode` API.
* Add `useShortestPath` option to `CameraAnimationPlugin.createCenterAnimator`, when enabled, shortest path will be applied when the start and end camera  center is across the antimeridian, for example from -170 to 170 longitude. Defaults to true.
* Introduce `SymbolLayer.iconColorSaturation` API.
* Introduce experimental `RasterLayer.rasterElevation` API.
* Introduce experimental `MapboxMap.startPerformanceStatisticsCollection` / `MapboxMap.stopPerformanceStatisticsCollection` APIs allowing to start / stop collecting map rendering performance statistics.
* Introduce `GeoJsonSource.tileCacheBudget`, `RasterSource.tileCacheBudget`, `RasterDemSource.tileCacheBudget`, `RasterArraySource.tileCacheBudget`, `VectorSource.tileCacheBudget`, `CustomGeometrySource.tileCacheBudget`, `CustomRasterSource.tileCacheBudget`.
* Skip unneeded layers properties re-evaluation on zoom change.
* Add the possibility to use constant expressions for `model-emissive-strength` when rendering 3D model layers using 2D sources.
* Introduce static `HttpServiceFactory.setMaxRequestsPerHost` API.
* `TileStoreOptions.DiskQuota` is now an abort threshold for tilestore size. When we have more than this amount of bytes stored, new downloads will fail. `Tilestore` starts to evict tiles with closest expiration date 50Mb (or 10% of DiskQuota, whatever is smaller) before this abort threshold is reached.

## Bug fixes 🐞
* Retain previous `CenterAltitudeMode` after gestures are finished.
* Avoid marking whole `LayerDsl` as experimental when only a part of the layer properties are experimental.
* Fix R8 error due to missing class `com.tobrun.datacompat.annotation.Default`.
* `EaseTo` and `MoveBy` camera animation and `DefaultViewportTransition` now will use shortest path when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude.
* Remove extra image padding from text shaping offset.
* Address crashes on certain Android devices by disabling the texture pool.
* Fix elevated rasters with coordinates not aligned to the longitude/latitude grid.
* Fix a bug that was causing absence of `MapLoaded` event and never ending background task processing.
* Fix a bug that heatmap layer wasn't updating visuals after feature state change.
* Fix a bug where scientific notation is not supported when parse JSON numbers to `Value`.

## Dependencies
* Upgrade to [Kotlin Data compat v0.8.0](https://github.com/tobrun/kotlin-data-compat/releases/tag/v0.8.0).
* Update gl-native to v11.2.0-beta.1 and common to v24.2.0-beta.1.

## Known issues
With the new way of Mapbox SDK initialization, your application __unit tests__ may start failing when interacting with Mapbox APIs, even if mocked.
The error may look like:
```
Exception java.lang.NoClassDefFoundError: Could not initialize class com.mapbox.common.location.Location
```
or
```
Caused by: java.lang.RuntimeException: Method w in android.util.Log not mocked. See https://developer.android.com/r/studio-ui/build/not-mocked for details.
  at android.util.Log.w(Log.java)
  at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:116)
  at com.mapbox.common.BaseMapboxInitializer.init(BaseMapboxInitializer.kt)
  at com.mapbox.common.location.Location.<clinit>(Location.java:442)
```

To fix above errors, `BaseMapboxInitializer` should be properly mocked before accessing the failing Mapbox class. For example, when using Kotlin [MockK](https://mockk.io/) you should add the following code:
```kotlin
mockkObject(BaseMapboxInitializer)
every { BaseMapboxInitializer.init<Any>(any()) } just Runs
// your test code
unmockkObject(BaseMapboxInitializer)
```
Alternative solution is to apply [`unitTests.returnDefaultValues`](https://developer.android.com/training/testing/local-tests#error).


# 11.1.0 January 17, 2024
## Features ✨ and improvements 🏁
* From v11.1.0, Mapbox Android Auto Extension for Android is released as a separate module following the same release cadence with the main SDK, please refer to [this guide](extension-androidauto/README.md) to get started with Android Auto, and [v0.5.0 changelog](extension-androidauto/CHANGELOG-v0.5.0.md) for previous changelogs.
* Define minCompileSdkVersion=31 for Maps SDK libraries.
* Introduce `FillExtrusionLayer.fillExtrusionEmissiveStrength`, `HillshadeLayer.hillshadeEmissiveStrength` and `RasterLayer.rasterEmissiveStrength` properties.
* Introduce `RasterLayer.rasterArrayBand` property.
* Improve performance of `StyleInterface.localizeLabels` method.
* Introduce `RasterArraySource` with read only property `RasterArraySource.rasterLayers`, which can be used in combination with `RasterLayer.sourceLayer` and `RasterLayer.rasterArrayBand`.
* Improve error handling for `UnknownNativeException`, more specific error message will be thrown instead.
* Support landmark tilesets with compressed textures for improved tile load performance.
* Improve performance of changing layers' properties.

## Bug fixes 🐞
* Fix `MapSurface` rendering issue when widgets are used.
* Fix `coordinateBoundsForCameraUnwrapped` returning wrapped coordinates.
* Fix inconsistent behavior in fill-extrusion color when using directional and ambient lights.
* Downloaded but corrupted style is now invalidated and will be downloaded again on the next load.
* Fixed missing tiles in the bottom part of the screen when looking from the mountain down to the valley.
* Do not emit slot missing warnings if style imports are not fully loaded.
* Fixed wrong dem tile selection from elevation snapshots in rare cases.
* Fixed tile flickering with enabled terrain.
* Add missing properties, i.e. `array`, `values`, `maxValue`, `minValue`, `stepValue`, `metadata` when using `getStyleImportSchema` API, if they are present in the original schema.
* Exclude duplicated `tileID` in `MapboxMap.tileCover` querying results.
* Fix race condition on repeated style transitions, when the transition fails for some layers.
* Allow style schema to control imported fragment configs.
* Fix possible rendering artifacts on startup when `ContextMode.SHARED` is used.
* Fix wrong camera positions while using `setBounds`.
* Fix missing IDs of flat light types when configured through the `setLights` API.
* Reload image dependent tiles when sprites are loaded.
* Fix an issue where memory use would grow continuously with Z-offset enabled symbol layers.
* Fix crash when using Dynamic View Annotation with location indicator enabled but visibility is turned from visible to none.
* Fix `getStyleSourceProperties()` API for `RasterArray` source.
* Fix unreliable position update of View Annotations.
* Fix GeoJSON partial updates when there is an error during update followed by multiple update calls.

## Dependencies
* Update gl-native to v11.1.0 and common to v24.1.0.

# 11.1.0-rc.1 January 04, 2024
## Bug fixes 🐞
* Fix possible rendering artifacts on startup when `ContextMode.SHARED` is used.
* Fix regression introduced in v11.1.0-beta.1 where only last added widget was rendered.
* Fix wrong camera positions while using `setBounds`.
* Fix missing IDs of flat light types when configured through the `setLights` API.
* Reload image dependent tiles when sprites are loaded.
* Fix an issue where memory use would grow continuously with Z-offset enabled symbol layers.
* Fix crash when using Dynamic View Annotation with location indicator enabled but visibility is turned from visible to none.
* Fix `getStyleSourceProperties()` API for `RasterArray` source.
* Fix unreliable position update of View Annotations.

## Dependencies
* Update gl-native to v11.1.0-rc.1 and common to v24.1.0-rc.1.


# 11.1.0-beta.1 December 19, 2023
## Features ✨ and improvements 🏁
* Define minCompileSdkVersion=31 for Maps SDK libraries.
* Introduce `FillExtrusionLayer.fillExtrusionEmissiveStrength`, `HillshadeLayer.hillshadeEmissiveStrength` and `RasterLayer.rasterEmissiveStrength` properties.
* Introduce `RasterLayer.rasterArrayBand` property.
* Improve performance of `StyleInterface.localizeLabels` method.
* Introduce `RasterArraySource` with read only property `RasterArraySource.rasterLayers`, which can be used in combination with `RasterLayer.sourceLayer` and `RasterLayer.rasterArrayBand`.
* Improve error handling for `UnknownNativeException`, more specific error message will be thrown instead.
* Support landmark tilesets with compressed textures for improved tile load performance.

## Bug fixes 🐞
* Fix a `MapSurface` rendering issue when widgets are used.
* Fix `coordinateBoundsForCameraUnwrapped` returning wrapped coordinates.
* Fix inconsistent behavior in fill-extrusion color when using directional and ambient lights.
* Downloaded but corrupted style is now invalidated and will be downloaded again on the next load.
* Fixed missing tiles in the bottom part of the screen when looking from the mountain down to the valley.
* Do not emit slot missing warnings if style imports are not fully loaded.
* Fixed wrong dem tile selection from elevation snapshots in rare cases.
* Fixed tile flickering with enabled terrain.
* Add missing properties, i.e. `array`, `values`, `maxValue`, `minValue`, `stepValue`, `metadata` when using `getStyleImportSchema` API, if they are present in the original schema.
* Exclude duplicated tileID in tileCover querying results.
* Fix race condition on repeated style transitions, when the transition fails for some layers.
* Allow style schema to control imported fragment configs.

## Dependencies
* Update gl-native to v11.1.0-beta.1 and common to v24.1.0-beta.2.


# 11.0.0 November 29, 2023
## Breaking changes ⚠️
* **Minimum OpenGL ES version is now 3.0**.
* **Update SDK's `targetSdkVersion` and `compileSdkVersion` to 33**.
* Remove deprecated `GeoJsonSource` public constructor, builder should be used instead.
* Remove deprecated `MapboxMap.queryRenderedFeatures` methods.
* Remove `Snapshotter.setTileMode`, `Snapshotter.isInTileMode` methods.
* Remove deprecated `MapStyleStateDelegate` and `isFullyLoaded` method.
* Remove experimental `setRenderCacheOptions`, `getRenderCacheOptions` apis.
* Add `callback` argument to the `MapboxMap` methods `getFeatureState`, `setFeatureState`, `removeFeatureState`.
* Use different callback types for the `MapboxMap.queryRenderedFeatures` and the `MapboxMap.querySourceFeatures` methods.
* Return `cancelable` from the `MapboxMap` methods : `getFeatureState`, `setFeatureState`, `removeFeatureState`, `querySourceFeatures`, `getGeoJsonClusterLeaves`, `getGeoJsonClusterChildren`, `getGeoJsonClusterExpansionZoom`.
* Remove the deprecated `MapboxMap.queryFeatureExtensions` method.
* Remove `MapAnimationOptions.animatorListener` property. In order to subscribe to animations, provide `Animator.animatorListener` with `flyTo`, `easeTo`, `pitchBy`, `scaleBy`, `moveBy`, `rotateBy` apis.
* Replace `LocationEngine` use with `LocationService` in `DefaultProvider`.
* Add new `LocationConsumer.onError` method to allow consumers handle location errors.
* Remove `MapView.location2` related interfaces and move `showAccuracyRing`, `accuracyRingColor`, `accuracyRingBorderColor`, `puckBearingEnabled` and `puckBearingSource` to `MapView.location`.
* Make `AttributionSettings`, `CompassSettings`, `GesturesSettings`, `LocationComponentSettings`, `LogoSettings`, `ScaleBarSettings` not Kotlin `data class`, better binary compatible and implementing `Parcelable`.
* Change `CompassSettings.image`, `LocationPuck2D.topImage`, `LocationPuck2D.bearingImage`, `LocationPuck2D.shadowImage` to `ImageHolder` allowing to pass either drawable id or `Bitmap`.
* Remove deprecated `backgroundPatternTransition`, `lineDasharrayTransition`, `linePatternTransition`, `fillPatternTransition` properties.
* Replace `MapSnapshotInterface` interface with `MapSnapshotResult` abstract class and remove `image()` method, `bitmap()` should be used instead.
* Change `Annotation.id` from monotonically increasing `Long` to UUID represented as `String`.
* Remove `Annotation.featureIdentifier` used to connect with View Annotations, now `Annotation.id` should be used instead.
* Rename `PuckBearingSource` to `PuckBearing` in location component plugin.
* Remove deprecated overloaded `Style.setStyleGeoJSONSourceData(sourceId: String, data: GeoJSONSourceData)` method.
* Rename `MapboxMap.setMemoryBudget` to `MapboxMap.setTileCacheBudget` and make it non-experimental.
* Remove `ResourceOptions` and `ResourceOptionsManager`. Introduce `MapboxOptions` and `MapboxMapsOptions` to handle application-level access token and other generic options.
* Removed XML attributes `mapbox_resourcesAccessToken` and `mapbox_resourcesBaseUrl`.
* Update Mapbox styles to latest versions:

| Style             | Before                                       | After                                        |
|-------------------|----------------------------------------------|----------------------------------------------|
| MAPBOX_STREETS    | mapbox://styles/mapbox/streets-v11           | mapbox://styles/mapbox/streets-v12           |
| SATELLITE_STREETS | mapbox://styles/mapbox/satellite-streets-v11 | mapbox://styles/mapbox/satellite-streets-v12 |
| OUTDOORS          | mapbox://styles/mapbox/outdoors-v11          | mapbox://styles/mapbox/outdoors-v12          |
| LIGHT             | mapbox://styles/mapbox/light-v10             | mapbox://styles/mapbox/light-v11             |
| DARK              | mapbox://styles/mapbox/dark-v10              | mapbox://styles/mapbox/dark-v11              |


* Remove native interfaces `StyleManagerInterface`, `StyleInterface`, `CameraManagerInterface`, `MapInterface`, `ObservableInterface` and use only `Map` object to access native methods.
* Make map events typed-safe, events are now have their own subscription methods.
  Following events are added as typed-safe, `CameraChanged`, `MapIdle`, `MapLoadingError`, `MapLoaded`, `StyleDataLoaded`, `StyleLoaded`, `StyleImageMissing`, `StyleImageRemovedUnunsed`,
  `RenderFrameStarted`, `RenderFrameFinished`, `SourceAdded`, `SourceDataLoaded`, `SourceRemoved`, `ReourceRequest`.
  All `subscribe` methods return `Cancelable` object, which users could store and call `cancel` when subscription is no longer needed.
  `MapboxMap.unsubscribe` methods were removed.
* Rename `LocationConsumer.onAccuracyRadiusUpdated` to `onHorizontalAccuracyRadiusUpdated`.
* Deprecate `MapboxMap.loadStyleUri`, `MapboxMap.loadStyleJson` and `MapboxMap.loadStyle` methods and introduce one `MapboxMap.loadStyle` accepting either URI / JSON or Style DSL block.
* Replace `com.mapbox.maps.plugin.animation.Cancelable` with `com.mapbox.common.Cancelable`.
* Remove `TileStoreOptions.MAPBOX_ACCESS_TOKEN` used e.g. in `TileStore.setOption(TileStoreOptions.MAPBOX_ACCESS_TOKEN, someDomain, someValue)` as it has become redundant.
* Introduce `MapboxTracing` object allowing to enable Android traces to measure performance of the SDK. More details and instructions could be found in `Working with traces` section in `DEVELOPING.md`.
* Remove Mapbox plugin implementations from public API surface.
* Remove `HttpServiceFactory.getInstance`, `HttpServiceFactory.reset`, `HttpServiceFactory.setUserDefined` methods.
* Replace `HttpServiceFactory.getInstance().setInterceptor` with `HttpServiceFactory.setHttpServiceInterceptor`.
* Argument `dataId` of the `GeoJson.feature`, `GeoJson.featureCollection`, `GeoJson.geometry`, `GeoJson.url`, `GeoJson.data` became non-nullable.
* Remove `Style.getStyleSourcesAttribution`. `MapboxMap.getAttributions` should be used instead.
* (Kotlin only) Remove `Style.getStyleSources()` / `Style.getStyleLayers()`. Properties `Style.styleSources` / `Style.styleLayers` should be used instead.
* Replace style related enum classes with regular classes.
* Migrate from `android.app.AlertDialog` to `androidx.appcompat.app.AlertDialog` for attribution plugin.
* Rename `MapboxMap.subscribeStyleImageUnused` to `MapboxMap.subscribeStyleImageRemoveUnused`.
* The `MapCameraPlugin`'s `onCameraMove` method now uses `Point` for camera center and `EdgeInsets` for padding.
* Remove `MapInitOptions.optimizeForTerrain` as whenever terrain is present layer order is automatically adjusted for better performance.
* Replace `MapboxMap` and `MapCameraManagerDelegate` APIs `dragStart`, `dragEnd`, `getDragCameraOptions` with `cameraForDrag`, `setCenterAltitudeMode`.
* Remove setter functions for `Style.styleURI` and `Style.styleJSON` as loading the style should happen only with `MapboxMap.loadStyle`.
* Rename `StyleImageMissing.getStyleImageMissingEventData` to `StyleImageMissing.toStyleImageMissingEventData`.
* Rename `MapCameraManagerDelegate` properties for methods `cameraForCoordinateBounds`, `cameraForCoordinates` and `cameraForGeometry` to align them with `MapboxMap` methods.
* Consolidate `FetchTileFunctionCallback` and `CancelTileFunctionCallback` by single type `TileFunctionCallback`.
* Make `Image` parameter nullable in `setStyleCustomRasterSourceTileData()` method.
* Extension function `Style.getProjection()` return type changed from `Projection` to `Projection?`.
* Extension function `LocationComponentPlugin.createDefault2DPuck` in `LocationComponentUtils.kt` is now stand-alone `createDefault2DPuck`.
* Extension function `LocationComponentPlugin.createDefault2DPuck` in `LocationComponentUtils` is now stand-alone `createDefault2DPuck`.
* Function `createDefault2DPuck` does not require a `context` parameter.
* Increase minimum location puck bearing threshold needed to trigger an animation to 1 degree (previously 0.01 degrees) to reduce the CPU usage.
* Location component puck bearing enabled property (`MapView.location.puckBearingEanbled`) has been changed to `false` by default.
* `ViewAnnotationManager.getViewAnnotationByFeatureId` is renamed to `ViewAnnotationManager.getViewAnnotation`,
* `ViewAnnotationManager.getViewAnnotationByFeatureId` is renamed to `ViewAnnotationManager.getViewAnnotation`.
* `ViewAnnotationManager.getViewAnnotationOptionsByView` is renamed to `ViewAnnotationManager.getViewAnnotationOptions`.
* `ViewAnnotationManager.getViewAnnotationOptionsByFeatureId` is renamed to `ViewAnnotationManager.getViewAnnotationOptions`.
* `ViewAnnotationAnchorConfig` fields `offsetX`/`offsetY` are now of type Double instead of Int.
* `ViewAnnotationOptions` accepts list of anchors `variableAnchors` instead of `anchor`/`offsetX`/`offsetY`.
* `ViewAnnotationOptions` fields `width`/`height` are now of type Double instead of Int.
* `OnViewAnnotationUpdatedListener.onViewAnnotationPositionUpdated` arguments `width`/`height` are now of type Double instead of Int.
* Add `getName` method to `DeviceLo
Download .txt
gitextract_dk98dq8g/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── feature.md
│   │   └── issue_template.md
│   ├── pull_request_template.md
│   ├── stale.yml
│   └── workflows/
│       └── codeql.yml
├── .gitignore
├── CHANGELOG.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOPING.md
├── LICENSE.md
├── Makefile
├── README.md
├── android-auto-app/
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   └── auto/
│           │                       ├── app/
│           │                       │   └── MainActivity.kt
│           │                       ├── car/
│           │                       │   ├── CarAnimationThreadController.kt
│           │                       │   ├── CarCameraController.kt
│           │                       │   ├── CarLocationPuck.kt
│           │                       │   ├── CarMapShowcase.kt
│           │                       │   ├── CarMapWidgets.kt
│           │                       │   ├── MapScreen.kt
│           │                       │   ├── MapSession.kt
│           │                       │   ├── RequestPermissionScreen.kt
│           │                       │   ├── RetryScreen.kt
│           │                       │   └── SearchScreen.kt
│           │                       ├── service/
│           │                       │   └── MapboxCarAppService.kt
│           │                       └── testing/
│           │                           └── CarJavaInterfaceChecker.java
│           └── res/
│               ├── drawable/
│               │   ├── ic_pan_24.xml
│               │   ├── ic_zoom_in_24.xml
│               │   └── ic_zoom_out_24.xml
│               ├── layout/
│               │   └── activity_main.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── ic_launcher_background.xml
│               │   ├── strings.xml
│               │   └── themes.xml
│               └── xml/
│                   └── automotive_app_desc.xml
├── app/
│   ├── build.gradle.kts
│   ├── lint.xml
│   ├── mapbox-services-proguard-rules.pro
│   ├── permission.json
│   ├── proguard-rules.pro
│   ├── retrofit2-proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── testapp/
│       │   │                   ├── BaseMapTest.kt
│       │   │                   ├── CameraForCoordinatesTest.kt
│       │   │                   ├── ExampleOverviewActivityTest.kt
│       │   │                   ├── GeoJsonSourceMutateTest.kt
│       │   │                   ├── LoadStyleCallbackTest.kt
│       │   │                   ├── Utils.kt
│       │   │                   ├── annotation/
│       │   │                   │   ├── InteractionsTest.kt
│       │   │                   │   ├── UpdateAnnotationTest.kt
│       │   │                   │   ├── UpdateAnnotationWithMultiManagersTest.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── CircleAnnotationManagerAndroidTest.kt
│       │   │                   │       ├── PointAnnotationManagerAndroidTest.kt
│       │   │                   │       ├── PolygonAnnotationManagerAndroidTest.kt
│       │   │                   │       └── PolylineAnnotationManagerAndroidTest.kt
│       │   │                   ├── attribution/
│       │   │                   │   ├── AttributionAppCompatThemeTest.kt
│       │   │                   │   ├── AttributionMaterialThemeTest.kt
│       │   │                   │   ├── BaseAttributionThemeTest.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── AttributionAttributeParserDefaultValueTest.kt
│       │   │                   │       └── AttributionAttributeParserTest.kt
│       │   │                   ├── compass/
│       │   │                   │   └── generated/
│       │   │                   │       ├── CompassAttributeParserDefaultValueTest.kt
│       │   │                   │       └── CompassAttributeParserTest.kt
│       │   │                   ├── featurestate/
│       │   │                   │   ├── FeatureStateTest.kt
│       │   │                   │   └── StandardBuildingsFeatureStateTest.kt
│       │   │                   ├── gestures/
│       │   │                   │   ├── GestureActivityTest.kt
│       │   │                   │   ├── GestureInterceptedOnViewAnnotationTest.kt
│       │   │                   │   ├── GestureMapIdleTest.kt
│       │   │                   │   ├── GestureUiUtils.kt
│       │   │                   │   └── generated/
│       │   │                   │       ├── GesturesAttributeParserDefaultValueTest.kt
│       │   │                   │       └── GesturesAttributeParserTest.kt
│       │   │                   ├── integration/
│       │   │                   │   ├── BaseReuseIntegrationTest.kt
│       │   │                   │   ├── events/
│       │   │                   │   │   └── StyleLoadedEventTest.kt
│       │   │                   │   ├── fragment/
│       │   │                   │   │   ├── EmptyFragment.kt
│       │   │                   │   │   ├── FragmentScenarioTest.kt
│       │   │                   │   │   ├── FragmentTest.kt
│       │   │                   │   │   └── MapFragment.kt
│       │   │                   │   ├── surface/
│       │   │                   │   │   ├── MapViewSurfaceModeTest.kt
│       │   │                   │   │   ├── MapViewSurfaceModeWithRecyclerViewTest.kt
│       │   │                   │   │   └── SurfaceTest.kt
│       │   │                   │   └── texture/
│       │   │                   │       └── MapViewTextureModeTest.kt
│       │   │                   ├── locationcomponent/
│       │   │                   │   └── generated/
│       │   │                   │       ├── LocationComponentAttributeParserDefaultValueTest.kt
│       │   │                   │       └── LocationComponentAttributeParserTest.kt
│       │   │                   ├── logo/
│       │   │                   │   └── generated/
│       │   │                   │       ├── LogoAttributeParserDefaultValueTest.kt
│       │   │                   │       └── LogoAttributeParserTest.kt
│       │   │                   ├── observable/
│       │   │                   │   └── ObservableEventsTest.kt
│       │   │                   ├── overlay/
│       │   │                   │   └── MapOverlayPluginTest.kt
│       │   │                   ├── scalebar/
│       │   │                   │   └── generated/
│       │   │                   │       ├── ScaleBarAttributeParserDefaultValueTest.kt
│       │   │                   │       └── ScaleBarAttributeParserTest.kt
│       │   │                   └── viewport/
│       │   │                       └── ViewportPluginTest.kt
│       │   └── res/
│       │       └── layout/
│       │           └── view_annotation.xml
│       └── main/
│           ├── AndroidManifest.xml
│           ├── assets/
│           │   ├── annotations.json
│           │   ├── countries_hdi.json
│           │   ├── dva-sf-construction.geojson
│           │   ├── dva-sf-parkings.geojson
│           │   ├── dva-sf-route-alternative.geojson
│           │   ├── dva-sf-route-main.geojson
│           │   ├── ego_car.glb
│           │   ├── fragment-realestate-NY.json
│           │   ├── from_crema_to_council_crest.geojson
│           │   ├── long_route.json
│           │   ├── maine_polygon.geojson
│           │   ├── multiple_geometry_example.geojson
│           │   ├── navigation_route.json
│           │   ├── sf_airport_route.geojson
│           │   └── sportcar.glb
│           ├── cpp/
│           │   ├── CMakeLists.txt
│           │   └── example_custom_layer.cpp
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   ├── EmptyActivity.kt
│           │                   ├── EmptyFragmentActivity.kt
│           │                   ├── ExampleOverviewActivity.kt
│           │                   ├── MapboxApplication.kt
│           │                   ├── TestMapActivity.kt
│           │                   ├── adapter/
│           │                   │   ├── ExampleAdapter.kt
│           │                   │   └── ExampleSectionAdapter.kt
│           │                   ├── examples/
│           │                   │   ├── AnimatedImageSourceActivity.kt
│           │                   │   ├── BasicLocationPulsingCircleActivity.kt
│           │                   │   ├── CircleLayerClusteringActivity.kt
│           │                   │   ├── ClipLayerActivity.kt
│           │                   │   ├── CustomAttributionActivity.kt
│           │                   │   ├── DSLStylingActivity.kt
│           │                   │   ├── DebugModeActivity.kt
│           │                   │   ├── DistanceExpressionActivity.kt
│           │                   │   ├── EdgeToEdgeActivity.kt
│           │                   │   ├── ElevatedLineActivity.kt
│           │                   │   ├── FragmentBackStackActivity.kt
│           │                   │   ├── GeoJsonLayerInStackActivity.kt
│           │                   │   ├── GesturesActivity.kt
│           │                   │   ├── IconPropertyActivity.kt
│           │                   │   ├── ImageSourceActivity.kt
│           │                   │   ├── IndoorExampleActivity.kt
│           │                   │   ├── InsetMapActivity.kt
│           │                   │   ├── Interactive3DModelSourceActivity.kt
│           │                   │   ├── JavaInterfaceChecker.java
│           │                   │   ├── LargeGeojsonPerformanceActivity.kt
│           │                   │   ├── LegacyOfflineActivity.kt
│           │                   │   ├── LocationComponentActivity.kt
│           │                   │   ├── LocationComponentAnimationActivity.kt
│           │                   │   ├── LocationComponentModelAnimationActivity.kt
│           │                   │   ├── LocationTrackingActivity.kt
│           │                   │   ├── MapOverlayActivity.kt
│           │                   │   ├── MapViewCustomizationActivity.kt
│           │                   │   ├── MapboxMapRecorderActivity.kt
│           │                   │   ├── MapboxStudioStyleActivity.kt
│           │                   │   ├── MultiDisplayActivity.kt
│           │                   │   ├── MultiMapActivity.kt
│           │                   │   ├── NinePatchImageActivity.kt
│           │                   │   ├── OfflineActivity.kt
│           │                   │   ├── OngoingAnimationActivity.kt
│           │                   │   ├── OrnamentMarginActivity.kt
│           │                   │   ├── RawExpressionActivity.kt
│           │                   │   ├── RawGeoJsonActivity.kt
│           │                   │   ├── RawSourceLayerActivity.kt
│           │                   │   ├── RuntimeStylingActivity.kt
│           │                   │   ├── ScaleBarActivity.kt
│           │                   │   ├── SecondaryDisplayActivity.kt
│           │                   │   ├── SecondaryDisplayPresentationActivity.kt
│           │                   │   ├── ShowHideLayersActivity.kt
│           │                   │   ├── SimpleMapActivity.kt
│           │                   │   ├── SimulateNavigationRouteActivity.kt
│           │                   │   ├── SlotLayerActivity.kt
│           │                   │   ├── SpaceStationLocationActivity.kt
│           │                   │   ├── StandardStyleActivity.kt
│           │                   │   ├── StandardStyleInteractionsActivity.kt
│           │                   │   ├── StyleCirclesCategoricallyActivity.kt
│           │                   │   ├── StyleSwitchActivity.kt
│           │                   │   ├── SurfaceActivity.kt
│           │                   │   ├── SurfaceRecyclerViewActivity.kt
│           │                   │   ├── TextureViewActivity.kt
│           │                   │   ├── TextureViewAnimateActivity.kt
│           │                   │   ├── TintFillPatternActivity.kt
│           │                   │   ├── TransparentBackgroundActivity.kt
│           │                   │   ├── VectorTileSourceActivity.kt
│           │                   │   ├── ViewPagerActivity.kt
│           │                   │   ├── WithinExpressionActivity.kt
│           │                   │   ├── WmsSourceActivity.kt
│           │                   │   ├── annotation/
│           │                   │   │   ├── AnimatePointAnnotationActivity.kt
│           │                   │   │   └── AnnotationUtils.kt
│           │                   │   ├── camera/
│           │                   │   │   ├── CameraPredefinedAnimatorsActivity.kt
│           │                   │   │   ├── LowLevelCameraAnimatorActivity.kt
│           │                   │   │   └── RestrictBoundsActivity.kt
│           │                   │   ├── coroutines/
│           │                   │   │   └── featurestate/
│           │                   │   │       └── FeatureStateActivity.kt
│           │                   │   ├── customlayer/
│           │                   │   │   ├── CustomLayerActivity.kt
│           │                   │   │   ├── ExampleCustomLayer.kt
│           │                   │   │   ├── NativeCustomLayerActivity.kt
│           │                   │   │   ├── NativeExampleCustomLayer.kt
│           │                   │   │   ├── TriangleCustomLayer.kt
│           │                   │   │   ├── TriangleCustomLayerActivity.kt
│           │                   │   │   └── globe/
│           │                   │   │       ├── Cube.kt
│           │                   │   │       ├── CubeMesh.kt
│           │                   │   │       ├── GlobeCustomLayerActivity.kt
│           │                   │   │       ├── GlobeCustomLayerHost.kt
│           │                   │   │       ├── Matrix4f.kt
│           │                   │   │       ├── Program.kt
│           │                   │   │       ├── Utils.kt
│           │                   │   │       ├── VertexFloatBuffer.kt
│           │                   │   │       └── VertexIntBuffer.kt
│           │                   │   ├── datajoin/
│           │                   │   │   ├── CountriesData.kt
│           │                   │   │   └── DataJoinActivity.kt
│           │                   │   ├── fragment/
│           │                   │   │   ├── MapFragment.kt
│           │                   │   │   └── MapViewPager.kt
│           │                   │   ├── geofence/
│           │                   │   │   ├── ExtendedGeofencingActivity.kt
│           │                   │   │   └── SimpleGeofencingActivity.kt
│           │                   │   ├── globe/
│           │                   │   │   ├── GlobeActivity.kt
│           │                   │   │   ├── GlobeFlyToActivity.kt
│           │                   │   │   ├── HeatmapLayerGlobeActivity.kt
│           │                   │   │   └── SpinningGlobeActivity.kt
│           │                   │   ├── java/
│           │                   │   │   ├── DSLStylingJavaActivity.java
│           │                   │   │   └── RuntimeStylingJavaActivity.java
│           │                   │   ├── linesandpolygons/
│           │                   │   │   ├── DrawGeoJsonLineActivity.kt
│           │                   │   │   ├── DrawPolygonActivity.kt
│           │                   │   │   ├── LineGradientActivity.kt
│           │                   │   │   ├── MovingIconWithTrailingLineActivity.kt
│           │                   │   │   ├── PolygonHolesActivity.kt
│           │                   │   │   └── SnakingDirectionsRouteActivity.kt
│           │                   │   ├── localization/
│           │                   │   │   └── LocalizationActivity.kt
│           │                   │   ├── markersandcallouts/
│           │                   │   │   ├── AddMarkersSymbolActivity.kt
│           │                   │   │   ├── AddOneMarkerSymbolActivity.kt
│           │                   │   │   ├── AnimatedMarkerActivity.kt
│           │                   │   │   ├── CircleAnnotationActivity.kt
│           │                   │   │   ├── MultipleGeometriesActivity.kt
│           │                   │   │   ├── PointAnnotationActivity.kt
│           │                   │   │   ├── PointAnnotationClusterActivity.kt
│           │                   │   │   ├── PolygonAnnotationActivity.kt
│           │                   │   │   ├── PolylineAnnotationActivity.kt
│           │                   │   │   ├── infowindow/
│           │                   │   │   │   ├── InfoWindowActivity.kt
│           │                   │   │   │   ├── Marker.kt
│           │                   │   │   │   └── MarkerManager.kt
│           │                   │   │   └── viewannotation/
│           │                   │   │       ├── DynamicViewAnnotationActivity.kt
│           │                   │   │       ├── ViewAnnotationAnimationActivity.kt
│           │                   │   │       ├── ViewAnnotationBasicAddActivity.kt
│           │                   │   │       ├── ViewAnnotationShowcaseActivity.kt
│           │                   │   │       └── ViewAnnotationWithPointAnnotationActivity.kt
│           │                   │   ├── sky/
│           │                   │   │   ├── SkyLayerShowcaseActivity.kt
│           │                   │   │   └── SkyLayerSnapshotterActivity.kt
│           │                   │   ├── snapshotter/
│           │                   │   │   ├── DataDrivenMapSnapshotterActivity.kt
│           │                   │   │   ├── LocalStyleMapSnapshotterActivity.kt
│           │                   │   │   ├── MapSnapshotterActivity.kt
│           │                   │   │   └── MapViewSnapshotActivity.kt
│           │                   │   ├── style/
│           │                   │   │   ├── ColorThemeActivity.kt
│           │                   │   │   ├── CustomRasterSourceActivity.kt
│           │                   │   │   ├── PrecipitationActivity.kt
│           │                   │   │   ├── RasterColorizationActivity.kt
│           │                   │   │   ├── RasterParticlesActivity.kt
│           │                   │   │   ├── ThirdPartyVectorSourceActivity.kt
│           │                   │   │   └── TileJsonActivity.kt
│           │                   │   ├── terrain3D/
│           │                   │   │   ├── FillExtrusionActivity.kt
│           │                   │   │   ├── Lights3DActivity.kt
│           │                   │   │   ├── ModelLayerActivity.kt
│           │                   │   │   ├── SantaCatalinaActivity.kt
│           │                   │   │   └── Terrain3DShowcaseActivity.kt
│           │                   │   └── viewport/
│           │                   │       ├── AdvancedViewportGesturesExample.kt
│           │                   │       └── ViewportShowcaseActivity.kt
│           │                   ├── model/
│           │                   │   ├── IssModel.kt
│           │                   │   ├── IssPosition.kt
│           │                   │   └── SpecificExample.kt
│           │                   ├── utils/
│           │                   │   ├── BitmapUtils.kt
│           │                   │   ├── ItemClickSupport.kt
│           │                   │   ├── LocationPermissionHelper.kt
│           │                   │   ├── NavigationSimulator.kt
│           │                   │   ├── SimulateRouteLocationProvider.kt
│           │                   │   └── StorageUtils.kt
│           │                   └── wallpaper/
│           │                       └── MapWallpaper.kt
│           └── res/
│               ├── drawable/
│               │   ├── arrow_straight.xml
│               │   ├── bg_dva_eta.xml
│               │   ├── bg_dva_parking.xml
│               │   ├── bg_rounded_corner.xml
│               │   ├── ic_airplanemode_active_black_24dp.xml
│               │   ├── ic_baseline_refresh_24.xml
│               │   ├── ic_blue_marker.xml
│               │   ├── ic_callout_item_background.xml
│               │   ├── ic_cross.xml
│               │   ├── ic_layers.xml
│               │   ├── ic_layers_24dp.xml
│               │   ├── ic_layers_clear.xml
│               │   ├── ic_legacy_callout.xml
│               │   ├── ic_paint.xml
│               │   ├── ic_red_marker.xml
│               │   ├── ic_swap_horiz_white_24dp.xml
│               │   ├── ic_translate_white_24dp.xml
│               │   └── mapbox_mylocation_bg_shape.xml
│               ├── drawable-hdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-mdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xxhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── drawable-xxxhdpi/
│               │   ├── android_symbol.xml
│               │   └── line_divider.xml
│               ├── layout/
│               │   ├── activity_add_marker_symbol.xml
│               │   ├── activity_animated_imagesource.xml
│               │   ├── activity_animated_marker.xml
│               │   ├── activity_annotation.xml
│               │   ├── activity_camera_predefined_animators.xml
│               │   ├── activity_custom_attribution.xml
│               │   ├── activity_custom_layer.xml
│               │   ├── activity_custom_raster_source.xml
│               │   ├── activity_dds_draw_polygon.xml
│               │   ├── activity_dds_moving_icon_with_trailing_line.xml
│               │   ├── activity_debug.xml
│               │   ├── activity_dynamic_view_annotations.xml
│               │   ├── activity_edge_to_edge.xml
│               │   ├── activity_empty_fab.xml
│               │   ├── activity_example_overview.xml
│               │   ├── activity_extended_geofencing.xml
│               │   ├── activity_feature_state.xml
│               │   ├── activity_fill_extrusion.xml
│               │   ├── activity_gestures.xml
│               │   ├── activity_globe_custom_layer.xml
│               │   ├── activity_heatmap_layer.xml
│               │   ├── activity_icon_property.xml
│               │   ├── activity_image_source.xml
│               │   ├── activity_indoor_example.xml
│               │   ├── activity_inset_map.xml
│               │   ├── activity_interactive_3d_model_source.xml
│               │   ├── activity_javaservices_snaking_directions_route.xml
│               │   ├── activity_legacy_offline.xml
│               │   ├── activity_line_gradient.xml
│               │   ├── activity_location_component.xml
│               │   ├── activity_location_component_animation.xml
│               │   ├── activity_location_layer_basic_pulsing_circle.xml
│               │   ├── activity_map_localization.xml
│               │   ├── activity_map_overlay.xml
│               │   ├── activity_map_view_customization.xml
│               │   ├── activity_mapview.xml
│               │   ├── activity_multi_display.xml
│               │   ├── activity_multi_map.xml
│               │   ├── activity_multiple_geometries.xml
│               │   ├── activity_offline.xml
│               │   ├── activity_precipitations.xml
│               │   ├── activity_recycler.xml
│               │   ├── activity_restrict_bounds.xml
│               │   ├── activity_rts_fill_pattern_tint.xml
│               │   ├── activity_scale_bar.xml
│               │   ├── activity_secondary_display.xml
│               │   ├── activity_secondary_display_presentation.xml
│               │   ├── activity_show_hide_layers.xml
│               │   ├── activity_simple_geofencing.xml
│               │   ├── activity_sky_layer.xml
│               │   ├── activity_sky_snapshotter.xml
│               │   ├── activity_slot_layer.xml
│               │   ├── activity_standard_style.xml
│               │   ├── activity_style_mapbox_studio.xml
│               │   ├── activity_style_switch.xml
│               │   ├── activity_style_vector_source.xml
│               │   ├── activity_surface.xml
│               │   ├── activity_terrain_showcase.xml
│               │   ├── activity_texture_view.xml
│               │   ├── activity_transparent_background.xml
│               │   ├── activity_view_annotation_showcase.xml
│               │   ├── activity_view_snapshot.xml
│               │   ├── activity_viewpager.xml
│               │   ├── activity_viewport_animation.xml
│               │   ├── activity_wms_source.xml
│               │   ├── generated_test_attribution.xml
│               │   ├── generated_test_compass.xml
│               │   ├── generated_test_gestures.xml
│               │   ├── generated_test_locationcomponent.xml
│               │   ├── generated_test_logo.xml
│               │   ├── generated_test_scalebar.xml
│               │   ├── item_callout_view.xml
│               │   ├── item_display_info.xml
│               │   ├── item_dva_alt_eta.xml
│               │   ├── item_dva_construction.xml
│               │   ├── item_dva_eta.xml
│               │   ├── item_dva_parking.xml
│               │   ├── item_gesture_alert.xml
│               │   ├── item_legacy_callout_view.xml
│               │   ├── item_map.xml
│               │   ├── item_single_example.xml
│               │   ├── item_spinner_view.xml
│               │   └── section_main_layout.xml
│               ├── menu/
│               │   ├── menu_bounds.xml
│               │   ├── menu_clip_layer.xml
│               │   ├── menu_color_theme.xml
│               │   ├── menu_custom_layer.xml
│               │   ├── menu_debug_mode.xml
│               │   ├── menu_gestures.xml
│               │   ├── menu_languages.xml
│               │   ├── menu_location_component.xml
│               │   ├── menu_location_component_model_customisation.xml
│               │   ├── menu_predefined_animators.xml
│               │   ├── menu_pulsing_location_mode.xml
│               │   ├── menu_standard_style_interactions.xml
│               │   ├── menu_symbol.xml
│               │   ├── menu_tilejson.xml
│               │   └── menu_view_annotation.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── actions.xml
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   ├── example_categories.xml
│               │   ├── example_descriptions.xml
│               │   ├── example_titles.xml
│               │   ├── ic_launcher_background.xml
│               │   ├── ids.xml
│               │   ├── interpolators.xml
│               │   ├── strings.xml
│               │   └── styles.xml
│               └── xml/
│                   └── map_wallpaper.xml
├── build.gradle.kts
├── cloudformation/
│   └── ci.template.js
├── codecov.yml
├── compose-app/
│   ├── .gitignore
│   ├── build.gradle.kts
│   ├── mapbox-services-proguard-rules.pro
│   ├── proguard-rules.pro
│   ├── retrofit2-proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── assets/
│           │   ├── dva-sf-construction.geojson
│           │   ├── dva-sf-parkings.geojson
│           │   ├── dva-sf-route-alternative.geojson
│           │   ├── dva-sf-route-main.geojson
│           │   ├── fragment-realestate-NY.json
│           │   ├── navigation_route.json
│           │   └── sportcar.glb
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── compose/
│           │                   └── testapp/
│           │                       ├── ExampleCategoryItem.kt
│           │                       ├── ExampleListItem.kt
│           │                       ├── ExampleOverviewActivity.kt
│           │                       ├── ExampleScaffold.kt
│           │                       ├── MapboxApplication.kt
│           │                       ├── data/
│           │                       │   ├── ExamplesProvider.kt
│           │                       │   └── model/
│           │                       │       └── ExampleEntry.kt
│           │                       ├── examples/
│           │                       │   ├── animation/
│           │                       │   │   └── MapViewportAnimationsActivity.kt
│           │                       │   ├── annotation/
│           │                       │   │   ├── CircleAnnotationActivity.kt
│           │                       │   │   ├── CustomVectorIconsActivity.kt
│           │                       │   │   ├── DynamicViewAnnotationActivity.kt
│           │                       │   │   ├── MarkersActivity.kt
│           │                       │   │   ├── PointAnnotationActivity.kt
│           │                       │   │   ├── PointAnnotationClusterActivity.kt
│           │                       │   │   ├── PolygonAnnotationActivity.kt
│           │                       │   │   ├── PolylineAnnotationActivity.kt
│           │                       │   │   └── ViewAnnotationActivity.kt
│           │                       │   ├── basic/
│           │                       │   │   ├── AccessibilityScaleActivity.kt
│           │                       │   │   ├── DebugModeActivity.kt
│           │                       │   │   ├── EdgeToEdgeActivity.kt
│           │                       │   │   ├── LazyColumnMapActivity.kt
│           │                       │   │   ├── MultiDisplayActivity.kt
│           │                       │   │   ├── MultiMapActivity.kt
│           │                       │   │   ├── QueryRenderedFeatureActivity.kt
│           │                       │   │   └── SimpleMapActivity.kt
│           │                       │   ├── location/
│           │                       │   │   ├── LocationComponentActivity.kt
│           │                       │   │   └── NavigationSimulationActivity.kt
│           │                       │   ├── model/
│           │                       │   │   ├── Animated3DModelActivity.kt
│           │                       │   │   └── Interactive3DModelFeatureStateActivity.kt
│           │                       │   ├── ornaments/
│           │                       │   │   ├── CustomAttributionActivity.kt
│           │                       │   │   └── OrnamentCustomisationActivity.kt
│           │                       │   ├── style/
│           │                       │   │   ├── AnimatedImageSourceActivity.kt
│           │                       │   │   ├── AppearancesActivity.kt
│           │                       │   │   ├── ClipLayerActivity.kt
│           │                       │   │   ├── ColorThemeActivity.kt
│           │                       │   │   ├── ElevatedLineActivity.kt
│           │                       │   │   ├── GenericStylePositionsActivity.kt
│           │                       │   │   ├── ImageSourceActivity.kt
│           │                       │   │   ├── InteractionsActivity.kt
│           │                       │   │   ├── ModelLayerActivity.kt
│           │                       │   │   ├── PrecipitationsActivity.kt
│           │                       │   │   ├── StandardStyleActivity.kt
│           │                       │   │   ├── StyleCompositionActivity.kt
│           │                       │   │   ├── StyleImportsActivity.kt
│           │                       │   │   ├── StyleStatesActivity.kt
│           │                       │   │   └── TerrainActivity.kt
│           │                       │   └── utils/
│           │                       │       ├── AnnotationUtils.kt
│           │                       │       ├── CityLocations.kt
│           │                       │       ├── PermissionUtils.kt
│           │                       │       └── SimulateRouteLocationProvider.kt
│           │                       ├── ui/
│           │                       │   └── theme/
│           │                       │       ├── Color.kt
│           │                       │       ├── Shape.kt
│           │                       │       ├── Theme.kt
│           │                       │       └── Type.kt
│           │                       └── utils/
│           │                           ├── FrameStatsRecorder.kt
│           │                           └── StorageUtils.kt
│           └── res/
│               ├── drawable/
│               │   ├── arrow_straight.xml
│               │   ├── bg_dva_eta.xml
│               │   ├── bg_dva_parking.xml
│               │   ├── ic_blue_marker.xml
│               │   └── ic_red_marker.xml
│               ├── mipmap-anydpi-v26/
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── example_categories.xml
│               │   ├── example_descriptions.xml
│               │   ├── example_titles.xml
│               │   ├── ic_launcher_background.xml
│               │   ├── strings.xml
│               │   └── themes.xml
│               └── values-night/
│                   └── themes.xml
├── extension-androidauto/
│   ├── .gitignore
│   ├── CHANGELOG-v0.5.0.md
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-androidauto.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── androidauto/
│       │                           ├── CarMapSurfaceOwner.kt
│       │                           ├── DefaultMapboxCarMapGestureHandler.kt
│       │                           ├── MapSurfaceProvider.kt
│       │                           ├── MapboxCarMap.kt
│       │                           ├── MapboxCarMapEx.kt
│       │                           ├── MapboxCarMapGestureHandler.java
│       │                           ├── MapboxCarMapInitializer.kt
│       │                           ├── MapboxCarMapObserver.java
│       │                           ├── MapboxCarMapScreenInstaller.kt
│       │                           ├── MapboxCarMapSessionInstaller.kt
│       │                           ├── MapboxCarMapSurface.kt
│       │                           ├── MapboxCarTelemetryEvents.kt
│       │                           └── widgets/
│       │                               ├── CompassWidget.kt
│       │                               └── LogoWidget.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── androidauto/
│                                   ├── CarMapSurfaceOwnerTest.kt
│                                   ├── DefaultMapboxCarMapGestureHandlerTest.kt
│                                   ├── MapboxCarMapScreenInstallerTest.kt
│                                   ├── MapboxCarMapSessionInstallerTest.kt
│                                   ├── MapboxCarMapTest.kt
│                                   └── testing/
│                                       └── TestLifecycleOwner.kt
├── extension-compose/
│   ├── .gitignore
│   ├── CHANGELOG-v0.1.0.md
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-compose.api
│   ├── build.gradle.kts
│   ├── lint.xml
│   └── src/
│       ├── androidTest/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── extension/
│       │   │                   └── compose/
│       │   │                       ├── MapIntegrationTests.kt
│       │   │                       ├── annotation/
│       │   │                       │   ├── AnnotationTests.kt
│       │   │                       │   └── ViewAnnotationTest.kt
│       │   │                       ├── internal/
│       │   │                       │   └── utils/
│       │   │                       │       └── CityLocations.kt
│       │   │                       ├── multimap/
│       │   │                       │   └── MultiMapTest.kt
│       │   │                       └── style/
│       │   │                           ├── LayerPositionAwareNodeTest.kt
│       │   │                           └── standard/
│       │   │                               └── StandardStyleConfigurationTest.kt
│       │   └── res/
│       │       └── values/
│       │           └── strings.xml
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── extension/
│       │   │                   └── compose/
│       │   │                       ├── ComposeMapInitOptions.kt
│       │   │                       ├── DisposableMapEffect.kt
│       │   │                       ├── MapEffect.kt
│       │   │                       ├── MapState.kt
│       │   │                       ├── MapboxMap.kt
│       │   │                       ├── MapboxMapComposable.kt
│       │   │                       ├── MapboxMapScope.kt
│       │   │                       ├── MapboxMapScopeMarker.kt
│       │   │                       ├── animation/
│       │   │                       │   └── viewport/
│       │   │                       │       └── MapViewportState.kt
│       │   │                       ├── annotation/
│       │   │                       │   ├── IconImage.kt
│       │   │                       │   ├── Marker.kt
│       │   │                       │   ├── MarkerAnimation.kt
│       │   │                       │   ├── MarkerAnimationState.kt
│       │   │                       │   ├── ViewAnnotation.kt
│       │   │                       │   ├── generated/
│       │   │                       │   │   ├── CircleAnnotation.kt
│       │   │                       │   │   ├── CircleAnnotationGroup.kt
│       │   │                       │   │   ├── CircleAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── CircleAnnotationGroupState.kt
│       │   │                       │   │   ├── CircleAnnotationInteractionsState.kt
│       │   │                       │   │   ├── CircleAnnotationOptionsExt.kt
│       │   │                       │   │   ├── CircleAnnotationState.kt
│       │   │                       │   │   ├── PointAnnotation.kt
│       │   │                       │   │   ├── PointAnnotationGroup.kt
│       │   │                       │   │   ├── PointAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PointAnnotationGroupState.kt
│       │   │                       │   │   ├── PointAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PointAnnotationOptionsExt.kt
│       │   │                       │   │   ├── PointAnnotationState.kt
│       │   │                       │   │   ├── PolygonAnnotation.kt
│       │   │                       │   │   ├── PolygonAnnotationGroup.kt
│       │   │                       │   │   ├── PolygonAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PolygonAnnotationGroupState.kt
│       │   │                       │   │   ├── PolygonAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PolygonAnnotationOptionsExt.kt
│       │   │                       │   │   ├── PolygonAnnotationState.kt
│       │   │                       │   │   ├── PolylineAnnotation.kt
│       │   │                       │   │   ├── PolylineAnnotationGroup.kt
│       │   │                       │   │   ├── PolylineAnnotationGroupInteractionsState.kt
│       │   │                       │   │   ├── PolylineAnnotationGroupState.kt
│       │   │                       │   │   ├── PolylineAnnotationInteractionsState.kt
│       │   │                       │   │   ├── PolylineAnnotationOptionsExt.kt
│       │   │                       │   │   └── PolylineAnnotationState.kt
│       │   │                       │   └── internal/
│       │   │                       │       ├── BaseAnnotationNode.kt
│       │   │                       │       └── generated/
│       │   │                       │           ├── CircleAnnotationManagerNode.kt
│       │   │                       │           ├── CircleAnnotationNode.kt
│       │   │                       │           ├── PointAnnotationManagerNode.kt
│       │   │                       │           ├── PointAnnotationNode.kt
│       │   │                       │           ├── PolygonAnnotationManagerNode.kt
│       │   │                       │           ├── PolygonAnnotationNode.kt
│       │   │                       │           ├── PolylineAnnotationManagerNode.kt
│       │   │                       │           └── PolylineAnnotationNode.kt
│       │   │                       ├── internal/
│       │   │                       │   ├── ComposeTelemetryEvents.kt
│       │   │                       │   ├── LayerPositionAwareNode.kt
│       │   │                       │   ├── MapApplier.kt
│       │   │                       │   ├── MapEventCancelableHolder.kt
│       │   │                       │   ├── MapPreviewPlaceholder.kt
│       │   │                       │   ├── MapViewLifecycle.kt
│       │   │                       │   ├── MapboxMapNode.kt
│       │   │                       │   ├── SettingsUtils.kt
│       │   │                       │   └── StyleLifecycleAwareNode.kt
│       │   │                       ├── ornaments/
│       │   │                       │   ├── attribution/
│       │   │                       │   │   ├── MapAttributionScope.kt
│       │   │                       │   │   └── internal/
│       │   │                       │   │       └── AttributionComposePlugin.kt
│       │   │                       │   ├── compass/
│       │   │                       │   │   └── MapCompassScope.kt
│       │   │                       │   ├── logo/
│       │   │                       │   │   └── MapLogoScope.kt
│       │   │                       │   └── scalebar/
│       │   │                       │       ├── MapScaleBarScope.kt
│       │   │                       │       └── internal/
│       │   │                       │           └── ScaleBarComposePlugin.kt
│       │   │                       └── style/
│       │   │                           ├── IdGenerator.kt
│       │   │                           ├── MapboxStyleComposable.kt
│       │   │                           ├── PropertyTypes.kt
│       │   │                           ├── Style.kt
│       │   │                           ├── StyleColorTheme.kt
│       │   │                           ├── StyleImage.kt
│       │   │                           ├── StyleState.kt
│       │   │                           ├── atmosphere/
│       │   │                           │   ├── AtmosphereStateApplier.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── AtmosphereState.kt
│       │   │                           ├── imports/
│       │   │                           │   ├── MapboxStyleImportComposable.kt
│       │   │                           │   ├── StyleImportInteractionsState.kt
│       │   │                           │   ├── StyleImportState.kt
│       │   │                           │   └── StyleImportsScope.kt
│       │   │                           ├── interactions/
│       │   │                           │   ├── BasicStyleInteractions.kt
│       │   │                           │   ├── StyleInteractionsState.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── FeaturesetFeatureScope.kt
│       │   │                           ├── internal/
│       │   │                           │   ├── ComposeTypeUtils.kt
│       │   │                           │   ├── MapStyleNode.kt
│       │   │                           │   ├── ParcelerUtils.kt
│       │   │                           │   ├── StyleAwareNode.kt
│       │   │                           │   ├── StyleConfig.kt
│       │   │                           │   ├── StyleLayerPosition.kt
│       │   │                           │   └── StyleSlot.kt
│       │   │                           ├── layers/
│       │   │                           │   ├── LayerInteractionsState.kt
│       │   │                           │   ├── PropertyTypes.kt
│       │   │                           │   ├── generated/
│       │   │                           │   │   ├── BackgroundLayer.kt
│       │   │                           │   │   ├── BackgroundLayerState.kt
│       │   │                           │   │   ├── CircleLayer.kt
│       │   │                           │   │   ├── CircleLayerState.kt
│       │   │                           │   │   ├── ClipLayer.kt
│       │   │                           │   │   ├── ClipLayerState.kt
│       │   │                           │   │   ├── FillExtrusionLayer.kt
│       │   │                           │   │   ├── FillExtrusionLayerState.kt
│       │   │                           │   │   ├── FillLayer.kt
│       │   │                           │   │   ├── FillLayerState.kt
│       │   │                           │   │   ├── HeatmapLayer.kt
│       │   │                           │   │   ├── HeatmapLayerState.kt
│       │   │                           │   │   ├── HillshadeLayer.kt
│       │   │                           │   │   ├── HillshadeLayerState.kt
│       │   │                           │   │   ├── LayerProperties.kt
│       │   │                           │   │   ├── LineLayer.kt
│       │   │                           │   │   ├── LineLayerState.kt
│       │   │                           │   │   ├── LocationIndicatorLayer.kt
│       │   │                           │   │   ├── LocationIndicatorLayerState.kt
│       │   │                           │   │   ├── ModelLayer.kt
│       │   │                           │   │   ├── ModelLayerState.kt
│       │   │                           │   │   ├── RasterLayer.kt
│       │   │                           │   │   ├── RasterLayerState.kt
│       │   │                           │   │   ├── RasterParticleLayer.kt
│       │   │                           │   │   ├── RasterParticleLayerState.kt
│       │   │                           │   │   ├── SkyLayer.kt
│       │   │                           │   │   ├── SkyLayerState.kt
│       │   │                           │   │   ├── SymbolLayer.kt
│       │   │                           │   │   └── SymbolLayerState.kt
│       │   │                           │   └── internal/
│       │   │                           │       └── LayerNode.kt
│       │   │                           ├── lights/
│       │   │                           │   ├── LightsState.kt
│       │   │                           │   ├── generated/
│       │   │                           │   │   ├── AmbientLightState.kt
│       │   │                           │   │   ├── DirectionalLightState.kt
│       │   │                           │   │   ├── FlatLightState.kt
│       │   │                           │   │   └── LightsProperties.kt
│       │   │                           │   └── internal/
│       │   │                           │       └── MapboxLight.kt
│       │   │                           ├── precipitations/
│       │   │                           │   ├── RainStateApplier.kt
│       │   │                           │   ├── SnowStateApplier.kt
│       │   │                           │   └── generated/
│       │   │                           │       ├── RainState.kt
│       │   │                           │       └── SnowState.kt
│       │   │                           ├── projection/
│       │   │                           │   └── generated/
│       │   │                           │       └── Projection.kt
│       │   │                           ├── sources/
│       │   │                           │   ├── PropertyTypes.kt
│       │   │                           │   ├── SourceState.kt
│       │   │                           │   └── generated/
│       │   │                           │       ├── GeoJsonSourceState.kt
│       │   │                           │       ├── ImageSourceState.kt
│       │   │                           │       ├── ModelSourceState.kt
│       │   │                           │       ├── RasterArraySourceState.kt
│       │   │                           │       ├── RasterDemSourceState.kt
│       │   │                           │       ├── RasterSourceState.kt
│       │   │                           │       ├── SourceProperties.kt
│       │   │                           │       └── VectorSourceState.kt
│       │   │                           ├── standard/
│       │   │                           │   ├── BaseStandardStyleConfigurationState.kt
│       │   │                           │   ├── BaseStandardStyleState.kt
│       │   │                           │   ├── MapboxStandardSatelliteStyle.kt
│       │   │                           │   ├── MapboxStandardStyle.kt
│       │   │                           │   ├── StandardSatelliteStyleConfigurationState.kt
│       │   │                           │   ├── StandardSatelliteStyleState.kt
│       │   │                           │   ├── StandardStyleConfigurationState.kt
│       │   │                           │   ├── StandardStyleState.kt
│       │   │                           │   └── generated/
│       │   │                           │       └── StandardStyleInteractionsState.kt
│       │   │                           └── terrain/
│       │   │                               ├── TerrainStateApplier.kt
│       │   │                               └── generated/
│       │   │                                   └── TerrainState.kt
│       │   └── res/
│       │       ├── drawable/
│       │       │   ├── default_marker.xml
│       │       │   ├── default_marker_inner.xml
│       │       │   ├── default_marker_inner_stroke.xml
│       │       │   ├── default_marker_outer.xml
│       │       │   └── default_marker_outer_stroke.xml
│       │       └── values/
│       │           └── ids.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── compose/
│                                   ├── MapApplierTest.kt
│                                   ├── MapNodeExt.kt
│                                   ├── SimpleLayerPositionAwareNode.kt
│                                   ├── annotation/
│                                   │   └── MarkerAnimationTest.kt
│                                   ├── internal/
│                                   │   └── LayerPositionAwareNodeTest.kt
│                                   └── style/
│                                       ├── PropertiesTests.kt
│                                       ├── layers/
│                                       │   └── PropertiesTests.kt
│                                       └── projection/
│                                           └── ProjectionTests.kt
├── extension-localization/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-localization.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── localization/
│       │                           ├── Localization.kt
│       │                           ├── StyleInterfaceExtension.kt
│       │                           └── SupportedLanguages.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── localization/
│                                   └── SupportedLanguagesTest.kt
├── extension-style/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── extension-style.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── extension/
│       │                       └── style/
│       │                           ├── StyleExtensionImpl.kt
│       │                           ├── atmosphere/
│       │                           │   └── generated/
│       │                           │       ├── Atmosphere.kt
│       │                           │       └── AtmosphereExt.kt
│       │                           ├── color/
│       │                           │   └── ColorThemeExt.kt
│       │                           ├── expressions/
│       │                           │   ├── dsl/
│       │                           │   │   └── generated/
│       │                           │   │       └── ExpressionDsl.kt
│       │                           │   ├── generated/
│       │                           │   │   └── Expression.kt
│       │                           │   └── types/
│       │                           │       └── FormatSection.kt
│       │                           ├── image/
│       │                           │   ├── ImageExt.kt
│       │                           │   ├── ImageExtensionImpl.kt
│       │                           │   ├── ImageNinePatchExtensionImpl.kt
│       │                           │   ├── NinePatchImage.kt
│       │                           │   └── NinePatchUtils.kt
│       │                           ├── layers/
│       │                           │   ├── CustomLayer.kt
│       │                           │   ├── Layer.kt
│       │                           │   ├── LayerExt.kt
│       │                           │   ├── generated/
│       │                           │   │   ├── BackgroundLayer.kt
│       │                           │   │   ├── CircleLayer.kt
│       │                           │   │   ├── ClipLayer.kt
│       │                           │   │   ├── FillExtrusionLayer.kt
│       │                           │   │   ├── FillLayer.kt
│       │                           │   │   ├── HeatmapLayer.kt
│       │                           │   │   ├── HillshadeLayer.kt
│       │                           │   │   ├── LineLayer.kt
│       │                           │   │   ├── LocationIndicatorLayer.kt
│       │                           │   │   ├── ModelLayer.kt
│       │                           │   │   ├── RasterLayer.kt
│       │                           │   │   ├── RasterParticleLayer.kt
│       │                           │   │   ├── SkyLayer.kt
│       │                           │   │   ├── SlotLayer.kt
│       │                           │   │   └── SymbolLayer.kt
│       │                           │   └── properties/
│       │                           │       ├── PropertyValue.kt
│       │                           │       └── generated/
│       │                           │           └── Property.kt
│       │                           ├── light/
│       │                           │   ├── DynamicLight.kt
│       │                           │   ├── Light.kt
│       │                           │   ├── LightExt.kt
│       │                           │   ├── LightPosition.kt
│       │                           │   └── generated/
│       │                           │       ├── AmbientLight.kt
│       │                           │       ├── DirectionalLight.kt
│       │                           │       └── FlatLight.kt
│       │                           ├── model/
│       │                           │   ├── ModelExt.kt
│       │                           │   └── ModelExtensionImpl.kt
│       │                           ├── precipitations/
│       │                           │   └── generated/
│       │                           │       ├── Rain.kt
│       │                           │       ├── RainExt.kt
│       │                           │       ├── Snow.kt
│       │                           │       └── SnowExt.kt
│       │                           ├── projection/
│       │                           │   └── generated/
│       │                           │       ├── Projection.kt
│       │                           │       └── ProjectionExt.kt
│       │                           ├── sources/
│       │                           │   ├── CustomGeometrySource.kt
│       │                           │   ├── CustomRasterSource.kt
│       │                           │   ├── GeoJsonSourceExt.kt
│       │                           │   ├── ImageSourceExt.kt
│       │                           │   ├── Source.kt
│       │                           │   ├── SourceExt.kt
│       │                           │   ├── TileSet.kt
│       │                           │   └── generated/
│       │                           │       ├── GeoJsonSource.kt
│       │                           │       ├── ImageSource.kt
│       │                           │       ├── ModelSource.kt
│       │                           │       ├── ModelSourceModel.kt
│       │                           │       ├── RasterArraySource.kt
│       │                           │       ├── RasterDemSource.kt
│       │                           │       ├── RasterSource.kt
│       │                           │       ├── SourceProperties.kt
│       │                           │       └── VectorSource.kt
│       │                           ├── terrain/
│       │                           │   └── generated/
│       │                           │       ├── Terrain.kt
│       │                           │       └── TerrainExt.kt
│       │                           ├── types/
│       │                           │   ├── Formatted.kt
│       │                           │   ├── FormattedSection.kt
│       │                           │   ├── PromoteId.kt
│       │                           │   ├── StyleTransition.kt
│       │                           │   └── TypeDSLs.kt
│       │                           └── utils/
│       │                               ├── ColorUtils.kt
│       │                               ├── ExpectedUtils.kt
│       │                               ├── StyleTelemetryEvents.kt
│       │                               └── TypeUtils.kt
│       └── test/
│           └── java/
│               ├── android/
│               │   └── util/
│               │       └── Log.java
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── style/
│                                   ├── EqualsHashCodeTest.kt
│                                   ├── ShadowStyleManager.java
│                                   ├── atmosphere/
│                                   │   └── generated/
│                                   │       └── AtmosphereTest.kt
│                                   ├── expressions/
│                                   │   ├── LiteralExpressionTest.kt
│                                   │   └── generated/
│                                   │       └── ExpressionTest.kt
│                                   ├── image/
│                                   │   ├── ImageNinePatchExtensionImplTest.kt
│                                   │   └── ImagePluginImplTest.kt
│                                   ├── layers/
│                                   │   ├── LayerExtTest.kt
│                                   │   └── generated/
│                                   │       ├── BackgroundLayerTest.kt
│                                   │       ├── CircleLayerTest.kt
│                                   │       ├── ClipLayerTest.kt
│                                   │       ├── FillExtrusionLayerTest.kt
│                                   │       ├── FillLayerTest.kt
│                                   │       ├── HeatmapLayerTest.kt
│                                   │       ├── HillshadeLayerTest.kt
│                                   │       ├── LineLayerTest.kt
│                                   │       ├── LocationIndicatorLayerTest.kt
│                                   │       ├── ModelLayerTest.kt
│                                   │       ├── RasterLayerTest.kt
│                                   │       ├── RasterParticleLayerTest.kt
│                                   │       ├── SkyLayerTest.kt
│                                   │       └── SymbolLayerTest.kt
│                                   ├── light/
│                                   │   └── generated/
│                                   │       ├── AmbientLightTest.kt
│                                   │       ├── DirectionalLightTest.kt
│                                   │       └── FlatLightTest.kt
│                                   ├── precipitations/
│                                   │   └── generated/
│                                   │       ├── RainTest.kt
│                                   │       └── SnowTest.kt
│                                   ├── sources/
│                                   │   ├── CustomGeometrySourceTest.kt
│                                   │   ├── CustomRasterSourceTest.kt
│                                   │   ├── GeoJsonSourceMutateTest.kt
│                                   │   ├── ImageSourceExtTest.kt
│                                   │   ├── TileSetTest.kt
│                                   │   └── generated/
│                                   │       ├── GeoJsonSourceTest.kt
│                                   │       ├── ImageSourceTest.kt
│                                   │       ├── ModelSourceModelTest.kt
│                                   │       ├── ModelSourceTest.kt
│                                   │       ├── RasterArraySourceTest.kt
│                                   │       ├── RasterDemSourceTest.kt
│                                   │       ├── RasterSourceTest.kt
│                                   │       └── VectorSourceTest.kt
│                                   ├── terrain/
│                                   │   └── generated/
│                                   │       └── TerrainTest.kt
│                                   └── utils/
│                                       ├── ColorUtilsTest.kt
│                                       ├── PromoteIdTest.kt
│                                       └── TypeUtilsTest.kt
├── extension-style-app/
│   ├── build.gradle.kts
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── testapp/
│       │                       └── style/
│       │                           ├── BaseStyleTest.kt
│       │                           ├── atmosphere/
│       │                           │   └── generated/
│       │                           │       └── AtmosphereTest.kt
│       │                           ├── expressions/
│       │                           │   └── ExpressionTest.kt
│       │                           ├── layers/
│       │                           │   ├── CustomLayerTest.kt
│       │                           │   ├── SlotLayerTest.kt
│       │                           │   └── generated/
│       │                           │       ├── BackgroundLayerTest.kt
│       │                           │       ├── CircleLayerTest.kt
│       │                           │       ├── ClipLayerTest.kt
│       │                           │       ├── FillExtrusionLayerTest.kt
│       │                           │       ├── FillLayerTest.kt
│       │                           │       ├── HeatmapLayerTest.kt
│       │                           │       ├── HillshadeLayerTest.kt
│       │                           │       ├── LineLayerTest.kt
│       │                           │       ├── LocationIndicatorLayerTest.kt
│       │                           │       ├── ModelLayerTest.kt
│       │                           │       ├── RasterLayerTest.kt
│       │                           │       ├── RasterParticleLayerTest.kt
│       │                           │       ├── SkyLayerTest.kt
│       │                           │       └── SymbolLayerTest.kt
│       │                           ├── light/
│       │                           │   ├── LightTest.kt
│       │                           │   └── generated/
│       │                           │       ├── AmbientLightTest.kt
│       │                           │       ├── DirectionalLightTest.kt
│       │                           │       └── FlatLightTest.kt
│       │                           ├── precipitations/
│       │                           │   └── generated/
│       │                           │       ├── RainTest.kt
│       │                           │       └── SnowTest.kt
│       │                           ├── sources/
│       │                           │   ├── RasterArraySourceTest.kt
│       │                           │   └── generated/
│       │                           │       ├── GeoJsonSourceTest.kt
│       │                           │       ├── ImageSourceTest.kt
│       │                           │       ├── ModelSourceModelTest.kt
│       │                           │       ├── ModelSourceTest.kt
│       │                           │       ├── RasterArraySourceTest.kt
│       │                           │       ├── RasterDemSourceTest.kt
│       │                           │       ├── RasterSourceTest.kt
│       │                           │       └── VectorSourceTest.kt
│       │                           ├── terrain/
│       │                           │   └── generated/
│       │                           │       └── TerrainTest.kt
│       │                           └── utils/
│       │                               └── TypeUtilsTest.kt
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── testapp/
│           │                   └── style/
│           │                       └── MainActivity.kt
│           └── res/
│               └── values/
│                   └── ids.xml
├── extension-style-lint-rules/
│   ├── .gitignore
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── lint/
│       │   │                   └── style/
│       │   │                       ├── MapboxStyleDslDetector.kt
│       │   │                       ├── StyleIssueRegistry.kt
│       │   │                       ├── UnusedStyleDslDetector.kt
│       │   │                       └── expressions/
│       │   │                           ├── IllegalNumberOfArgumentsDetector.kt
│       │   │                           ├── MapboxExpressionDslDetector.kt
│       │   │                           └── UnusedLiteralDetector.kt
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               └── com.android.tools.lint.client.api.IssueRegistry
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── lint/
│                               └── style/
│                                   ├── Stubs.kt
│                                   ├── UnusedStyleDslDetectorTest.kt
│                                   └── expressions/
│                                       ├── IllegalNumberOfArgumentsDetectorTest.kt
│                                       └── UnusedLiteralDetectorTest.kt
├── gradle/
│   ├── apps.versions.toml
│   ├── commonlibs.versions.toml
│   ├── dependency-updates.gradle
│   ├── ktlint.gradle.kts
│   ├── libs.versions.toml
│   ├── lint.gradle
│   ├── metalava.gradle
│   ├── play-publisher.gradle
│   ├── script-git-version.gradle
│   ├── track-public-apis.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mapbox-convention-plugin/
│   ├── README.md
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── gradle/
│                               └── plugins/
│                                   ├── MapboxPlugins.kt
│                                   ├── extensions/
│                                   │   ├── MapboxApplicationExtension.kt
│                                   │   ├── MapboxDependenciesExtension.kt
│                                   │   ├── MapboxDependencyExtension.kt
│                                   │   ├── MapboxDokkaExtension.kt
│                                   │   ├── MapboxJApiCmpExtension.kt
│                                   │   ├── MapboxJacocoExtension.kt
│                                   │   ├── MapboxLibraryExtension.kt
│                                   │   ├── MapboxPublishLibraryExtension.kt
│                                   │   └── MapboxRootExtension.kt
│                                   └── internal/
│                                       ├── Dependencies.kt
│                                       ├── GradleExt.kt
│                                       └── MapboxDependencies.kt
├── maps-sdk/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── maps-sdk.api
│   ├── build.gradle.kts
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               ├── BaseAnimationMapTest.kt
│       │   │               ├── CameraForCoordinatesTest.kt
│       │   │               ├── EmptyActivity.kt
│       │   │               ├── LegacyOfflineManagerTest.kt
│       │   │               ├── MapIntegrationTest.kt
│       │   │               ├── MapSnapshotterTest.kt
│       │   │               ├── MapboxMapIntegrationTest.kt
│       │   │               ├── RenderTest.kt
│       │   │               ├── StyleLoadTest.kt
│       │   │               ├── SymbolScaleBehaviorTest.kt
│       │   │               ├── TestUtils.kt
│       │   │               ├── ThreadCheckTest.kt
│       │   │               ├── ViewAnnotationTest.kt
│       │   │               └── renderer/
│       │   │                   └── egl/
│       │   │                       ├── EGLSupportTest.kt
│       │   │                       └── RendererSetupTest.kt
│       │   └── res/
│       │       ├── layout/
│       │       │   ├── view_annotation.xml
│       │       │   └── view_annotation_wrap_content.xml
│       │       └── values/
│       │           └── strings.xml
│       ├── main/
│       │   ├── assets/
│       │   │   └── sdk_versions/
│       │   │       └── com.mapbox.maps
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               ├── CameraAttributeParser.kt
│       │   │               ├── DelegatingMapClient.kt
│       │   │               ├── DelegatingViewAnnotation.kt
│       │   │               ├── FontUtils.kt
│       │   │               ├── MapAttributeParser.kt
│       │   │               ├── MapControllable.kt
│       │   │               ├── MapController.kt
│       │   │               ├── MapGeofencingConsentImpl.kt
│       │   │               ├── MapInitOptions.kt
│       │   │               ├── MapProvider.kt
│       │   │               ├── MapSurface.kt
│       │   │               ├── MapView.kt
│       │   │               ├── MapboxConfigurationException.kt
│       │   │               ├── MapboxConstants.kt
│       │   │               ├── MapboxMap.kt
│       │   │               ├── MapboxMapRecorder.kt
│       │   │               ├── MapboxMapsOptions.kt
│       │   │               ├── MapboxTracing.kt
│       │   │               ├── NativeMapImpl.kt
│       │   │               ├── NativeObserver.kt
│       │   │               ├── SnapshotOverlay.kt
│       │   │               ├── SnapshotOverlayCallback.kt
│       │   │               ├── SnapshotOverlayOptions.kt
│       │   │               ├── SnapshotResultCallback.kt
│       │   │               ├── SnapshotStyleListener.kt
│       │   │               ├── Snapshotter.kt
│       │   │               ├── SnapshotterDestroyedException.kt
│       │   │               ├── Style.kt
│       │   │               ├── StyleObserver.kt
│       │   │               ├── SymbolScaleBehavior.kt
│       │   │               ├── Utils.kt
│       │   │               ├── attribution/
│       │   │               │   ├── AttributionLayout.kt
│       │   │               │   ├── AttributionMeasure.kt
│       │   │               │   └── AttributionParser.kt
│       │   │               ├── coroutine/
│       │   │               │   ├── MapCameraManagerDelegateExt.kt
│       │   │               │   ├── MapFeatureQueryDelegateExt.kt
│       │   │               │   └── MapboxMapExt.kt
│       │   │               ├── debugoptions/
│       │   │               │   ├── CameraDebugView.kt
│       │   │               │   ├── DebugOptionsController.kt
│       │   │               │   ├── MapViewDebugOptions.kt
│       │   │               │   └── PaddingDebugView.kt
│       │   │               ├── plugin/
│       │   │               │   ├── InvalidViewPluginHostException.kt
│       │   │               │   ├── MapAttributionDelegateImpl.kt
│       │   │               │   ├── MapDelegateProviderImpl.kt
│       │   │               │   └── MapPluginRegistry.kt
│       │   │               ├── renderer/
│       │   │               │   ├── FpsManager.kt
│       │   │               │   ├── GLMapboxRenderThread.kt
│       │   │               │   ├── MapboxRenderThread.kt
│       │   │               │   ├── MapboxRenderer.kt
│       │   │               │   ├── MapboxSurfaceHolderRenderer.kt
│       │   │               │   ├── MapboxSurfaceRenderer.kt
│       │   │               │   ├── MapboxTextureViewRenderer.kt
│       │   │               │   ├── MapboxWidgetRenderer.kt
│       │   │               │   ├── OnFpsChangedListener.kt
│       │   │               │   ├── RenderEvent.kt
│       │   │               │   ├── RenderHandlerThread.kt
│       │   │               │   ├── RenderThread.kt
│       │   │               │   ├── RenderThreadStatsRecorder.kt
│       │   │               │   ├── RendererError.kt
│       │   │               │   ├── RendererSetupErrorListener.kt
│       │   │               │   ├── VulkanMapboxRenderThread.kt
│       │   │               │   ├── egl/
│       │   │               │   │   ├── EGLConfigChooser.kt
│       │   │               │   │   └── EGLCore.kt
│       │   │               │   ├── gl/
│       │   │               │   │   ├── GlUtils.kt
│       │   │               │   │   ├── PixelReader.kt
│       │   │               │   │   └── TextureRenderer.kt
│       │   │               │   └── widget/
│       │   │               │       ├── BitmapWidget.kt
│       │   │               │       ├── BitmapWidgetRenderer.kt
│       │   │               │       ├── Widget.kt
│       │   │               │       ├── WidgetPosition.kt
│       │   │               │       └── WidgetRenderer.kt
│       │   │               └── viewannotation/
│       │   │                   ├── OnViewAnnotationUpdatedListener.kt
│       │   │                   ├── ViewAnnotationManager.kt
│       │   │                   ├── ViewAnnotationManagerImpl.kt
│       │   │                   ├── ViewAnnotationOptionsKtx.kt
│       │   │                   ├── ViewAnnotationUpdateMode.kt
│       │   │                   └── ViewAnnotationVisibility.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   └── mapbox_rounded_corner.xml
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── colors.xml
│       │   │   │   ├── ids.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           ├── TestUtils.kt
│           │           └── maps/
│           │               ├── CameraAttributeParserTest.kt
│           │               ├── EqualsHashCodeTest.kt
│           │               ├── FontUtilsTest.kt
│           │               ├── MapAttributeParserTest.kt
│           │               ├── MapControllerTest.kt
│           │               ├── MapInitOptionsTest.kt
│           │               ├── MapSurfaceTest.kt
│           │               ├── MapViewTest.kt
│           │               ├── MapViewTypedArrayTest.kt
│           │               ├── MapboxMapExtTest.kt
│           │               ├── MapboxMapRecorderTest.kt
│           │               ├── MapboxMapTest.kt
│           │               ├── MapboxOptionsTest.kt
│           │               ├── NativeMapTest.kt
│           │               ├── NativeObserverTest.kt
│           │               ├── SafeSystemCallTest.kt
│           │               ├── ShadowCameraManager.java
│           │               ├── ShadowMap.java
│           │               ├── ShadowMapRecorder.java
│           │               ├── ShadowMapSnapshotter.java
│           │               ├── ShadowStyleManager.java
│           │               ├── ShadowTracing.kt
│           │               ├── SnapshotterTest.kt
│           │               ├── StyleObserverTest.kt
│           │               ├── StyleTest.kt
│           │               ├── ViewAnnotationManagerAddTest.kt
│           │               ├── ViewAnnotationManagerTest.kt
│           │               ├── ViewAnnotationManagerZOrderingTest.kt
│           │               ├── attribution/
│           │               │   ├── AttributionParseTest.java
│           │               │   └── MapAttributionDelegateImplTest.kt
│           │               ├── debugoptions/
│           │               │   └── DebugOptionsControllerTest.kt
│           │               ├── plugin/
│           │               │   ├── MapDelegateProviderTest.kt
│           │               │   └── MapPluginRegistryTest.kt
│           │               ├── renderer/
│           │               │   ├── Cleanup.kt
│           │               │   ├── EglConfigChooserTest.kt
│           │               │   ├── FpsManagerTest.kt
│           │               │   ├── GLMapboxRenderThreadTest.kt
│           │               │   ├── MapboxRendererTest.kt
│           │               │   ├── MapboxSurfaceHolderRendererTest.kt
│           │               │   ├── MapboxSurfaceRendererTest.kt
│           │               │   ├── MapboxTextureViewRendererTest.kt
│           │               │   ├── RenderHandlerThreadTest.kt
│           │               │   └── widget/
│           │               │       └── BitmapWidgetRendererTest.kt
│           │               └── shadows/
│           │                   ├── ShadowCancelable.java
│           │                   ├── ShadowCoordinateBounds.java
│           │                   ├── ShadowEventsService.kt
│           │                   ├── ShadowLogThrottler.kt
│           │                   ├── ShadowMapsResourceOptions.java
│           │                   ├── ShadowObservable.java
│           │                   └── ShadowTelemetryService.kt
│           └── resources/
│               └── robolectric.properties
├── metalava/
│   ├── README.md
│   ├── metalava.jar
│   ├── metalava.patch
│   └── update.sh
├── module-telemetry/
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── module-telemetry.api
│   ├── build.gradle.kts
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── module/
│       │                       └── telemetry/
│       │                           └── MapTelemetryEventsServiceTest.kt
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── module/
│       │                       └── telemetry/
│       │                           ├── MapBaseEvent.kt
│       │                           ├── MapEventFactory.kt
│       │                           ├── MapLoadEvent.kt
│       │                           ├── MapTelemetryImpl.kt
│       │                           ├── PerformanceEvent.kt
│       │                           └── PhoneState.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── module/
│                               └── telemetry/
│                                   ├── EqualsHashCodeTest.kt
│                                   ├── MapEventFactoryTest.kt
│                                   └── MapTelemetryTest.kt
├── plugin-animation/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-animation.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── animation/
│       │                           ├── CameraAnimationsExt.kt
│       │                           ├── CameraAnimationsPluginImpl.kt
│       │                           ├── CameraAnimatorsFactory.kt
│       │                           ├── CameraTransform.kt
│       │                           ├── HighLevelAnimatorSet.kt
│       │                           └── animator/
│       │                               ├── CameraAnchorAnimator.kt
│       │                               ├── CameraAnimator.kt
│       │                               ├── CameraBearingAnimator.kt
│       │                               ├── CameraCenterAnimator.kt
│       │                               ├── CameraPaddingAnimator.kt
│       │                               ├── CameraPitchAnimator.kt
│       │                               ├── CameraTypeEvaluator.kt
│       │                               ├── CameraZoomAnimator.kt
│       │                               └── Evaluators.kt
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── animation/
│           │                       ├── CameraAnimationsChangeListenersTest.kt
│           │                       ├── CameraAnimationsExtTest.kt
│           │                       ├── CameraAnimationsListenersTest.kt
│           │                       ├── CameraAnimationsPluginImplTest.kt
│           │                       ├── CameraAnimatorsFactoryTest.kt
│           │                       └── animator/
│           │                           ├── CameraAnimatorTest.kt
│           │                           └── EvaluatorsTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-annotation/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-annotation.api
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── annotation/
│       │                           ├── AnnotationExt.kt
│       │                           ├── AnnotationManagerImpl.kt
│       │                           ├── AnnotationPluginImpl.kt
│       │                           ├── ConvertUtils.kt
│       │                           ├── QueryAnnotationCallback.kt
│       │                           └── generated/
│       │                               ├── CircleAnnotation.kt
│       │                               ├── CircleAnnotationManager.kt
│       │                               ├── CircleAnnotationOptions.kt
│       │                               ├── OnCircleAnnotationClickListener.kt
│       │                               ├── OnCircleAnnotationDragListener.kt
│       │                               ├── OnCircleAnnotationInteractionListener.kt
│       │                               ├── OnCircleAnnotationLongClickListener.kt
│       │                               ├── OnPointAnnotationClickListener.kt
│       │                               ├── OnPointAnnotationDragListener.kt
│       │                               ├── OnPointAnnotationInteractionListener.kt
│       │                               ├── OnPointAnnotationLongClickListener.kt
│       │                               ├── OnPolygonAnnotationClickListener.kt
│       │                               ├── OnPolygonAnnotationDragListener.kt
│       │                               ├── OnPolygonAnnotationInteractionListener.kt
│       │                               ├── OnPolygonAnnotationLongClickListener.kt
│       │                               ├── OnPolylineAnnotationClickListener.kt
│       │                               ├── OnPolylineAnnotationDragListener.kt
│       │                               ├── OnPolylineAnnotationInteractionListener.kt
│       │                               ├── OnPolylineAnnotationLongClickListener.kt
│       │                               ├── PointAnnotation.kt
│       │                               ├── PointAnnotationManager.kt
│       │                               ├── PointAnnotationOptions.kt
│       │                               ├── PolygonAnnotation.kt
│       │                               ├── PolygonAnnotationManager.kt
│       │                               ├── PolygonAnnotationOptions.kt
│       │                               ├── PolylineAnnotation.kt
│       │                               ├── PolylineAnnotationManager.kt
│       │                               └── PolylineAnnotationOptions.kt
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── annotation/
│           │                       ├── AnnotationPluginImplTest.kt
│           │                       ├── ShadowProjection.java
│           │                       ├── StyleImageRefCountTest.kt
│           │                       └── generated/
│           │                           ├── CircleAnnotationManagerTest.kt
│           │                           ├── PointAnnotationManagerTest.kt
│           │                           ├── PolygonAnnotationManagerTest.kt
│           │                           └── PolylineAnnotationManagerTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-attribution/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-attribution.api
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── attribution/
│       │   │                       ├── AttributionDialogManagerImpl.kt
│       │   │                       ├── AttributionExt.kt
│       │   │                       ├── AttributionPluginImpl.kt
│       │   │                       ├── AttributionViewImpl.kt
│       │   │                       └── generated/
│       │   │                           └── AttributionAttributeParser.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   ├── mapbox_attribution_default.xml
│       │   │   │   ├── mapbox_attribution_selected.xml
│       │   │   │   └── mapbox_attribution_selector.xml
│       │   │   ├── layout/
│       │   │   │   └── mapbox_attribution_list_item.xml
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── colors.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── attribution/
│           │                       ├── AttributionDialogManagerImplTest.kt
│           │                       ├── AttributionPluginImplImplTest.kt
│           │                       ├── AttributionViewImplTest.kt
│           │                       └── generated/
│           │                           └── AttributionAttributeParserTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-compass/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-compass.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── compass/
│       │   │                       ├── CompassExt.kt
│       │   │                       ├── CompassViewImpl.kt
│       │   │                       ├── CompassViewPlugin.kt
│       │   │                       └── generated/
│       │   │                           └── CompassAttributeParser.kt
│       │   ├── res/
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   ├── dimens.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── compass/
│                                   ├── CompassViewPluginTest.kt
│                                   └── generated/
│                                       └── CompassAttributeParserTest.kt
├── plugin-gestures/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-gestures.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── gestures/
│       │   │                       ├── GestureState.kt
│       │   │                       ├── GesturesConstants.kt
│       │   │                       ├── GesturesExt.kt
│       │   │                       ├── GesturesPluginImpl.kt
│       │   │                       ├── StandardGestureListenerShim.java
│       │   │                       └── generated/
│       │   │                           └── GesturesAttributeParser.kt
│       │   ├── res/
│       │   │   └── values/
│       │   │       ├── attrs.xml
│       │   │       ├── dimens.xml
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── gestures/
│           │                       ├── GestureOptionsTest.kt
│           │                       ├── GestureStateTest.kt
│           │                       ├── GesturesPluginTest.kt
│           │                       ├── StandardGestureListenerTest.java
│           │                       └── generated/
│           │                           └── GesturesAttributeParserTest.kt
│           └── resources/
│               └── robolectric.properties
├── plugin-indoorselector/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-indoorselector.api
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── mapbox/
│           │           └── maps/
│           │               └── plugin/
│           │                   └── indoorselector/
│           │                       ├── IndoorSelectorExt.kt
│           │                       ├── IndoorSelectorPluginImpl.kt
│           │                       └── IndoorSelectorViewImpl.kt
│           └── res/
│               ├── drawable/
│               │   ├── mapbox_indoor_selector_arrow_down.xml
│               │   ├── mapbox_indoor_selector_arrow_up.xml
│               │   └── mapbox_indoor_selector_building.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   └── strings.xml
│               └── values-night/
│                   └── colors.xml
├── plugin-lifecycle/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-lifecycle.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── lifecycle/
│       │                           ├── LifecycleExt.kt
│       │                           ├── MapboxLifecyclePluginImpl.kt
│       │                           └── ViewLifecycleOwner.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── extension/
│                               └── lifecycle/
│                                   ├── MapboxLifecyclePluginImplTest.kt
│                                   └── ViewLifecycleOwnerTest.kt
├── plugin-lifecycle-lint-rules/
│   ├── .gitignore
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── lint/
│       │   │                   └── lifecycle/
│       │   │                       ├── LifecycleIssueRegistry.kt
│       │   │                       └── LifecycleMethodDetector.kt
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               └── com.android.tools.lint.client.api.IssueRegistry
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── lint/
│                               └── LifecycleMethodDetectorTest.kt
├── plugin-locationcomponent/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-locationcomponent.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── locationcomponent/
│       │   │                       ├── DefaultLocationProvider.kt
│       │   │                       ├── LayerSourceProvider.kt
│       │   │                       ├── LocationCompassCalibrationListener.kt
│       │   │                       ├── LocationCompassEngine.kt
│       │   │                       ├── LocationComponentConstants.kt
│       │   │                       ├── LocationComponentExt.kt
│       │   │                       ├── LocationComponentPluginImpl.kt
│       │   │                       ├── LocationComponentPositionManager.kt
│       │   │                       ├── LocationIndicatorLayerRenderer.kt
│       │   │                       ├── LocationIndicatorLayerWrapper.kt
│       │   │                       ├── LocationLayerRenderer.kt
│       │   │                       ├── LocationLayerWrapper.kt
│       │   │                       ├── LocationPuckManager.kt
│       │   │                       ├── ModelLayerRenderer.kt
│       │   │                       ├── ModelLayerWrapper.kt
│       │   │                       ├── ModelSourceWrapper.kt
│       │   │                       ├── animators/
│       │   │                       │   ├── Evaluators.kt
│       │   │                       │   ├── PuckAccuracyRadiusAnimator.kt
│       │   │                       │   ├── PuckAnimator.kt
│       │   │                       │   ├── PuckAnimatorManager.kt
│       │   │                       │   ├── PuckBearingAnimator.kt
│       │   │                       │   ├── PuckPositionAnimator.kt
│       │   │                       │   └── PuckPulsingAnimator.kt
│       │   │                       ├── generated/
│       │   │                       │   └── LocationComponentAttributeParser.kt
│       │   │                       ├── model/
│       │   │                       │   └── AnimatableModel.kt
│       │   │                       └── utils/
│       │   │                           ├── BitmapUtils.kt
│       │   │                           └── ExpectedUtils.kt
│       │   ├── res/
│       │   │   ├── drawable/
│       │   │   │   ├── mapbox_info_bg_selector.xml
│       │   │   │   ├── mapbox_info_icon_default.xml
│       │   │   │   ├── mapbox_info_icon_selected.xml
│       │   │   │   ├── mapbox_mylocation_bg_shape.xml
│       │   │   │   ├── mapbox_popup_window_transparent.xml
│       │   │   │   ├── mapbox_rounded_corner.xml
│       │   │   │   ├── mapbox_user_bearing_icon.xml
│       │   │   │   ├── mapbox_user_icon.xml
│       │   │   │   ├── mapbox_user_icon_shadow.xml
│       │   │   │   ├── mapbox_user_icon_stale.xml
│       │   │   │   ├── mapbox_user_puck_icon.xml
│       │   │   │   └── mapbox_user_stroke_icon.xml
│       │   │   └── values/
│       │   │       ├── attrs.xml
│       │   │       ├── colors.xml
│       │   │       └── dimens.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           ├── plugin/
│                           │   └── locationcomponent/
│                           │       ├── DefaultLocationProviderTest.kt
│                           │       ├── LayerSourceProviderTest.kt
│                           │       ├── LocationCompassEngineTest.kt
│                           │       ├── LocationComponentPluginImplTest.kt
│                           │       ├── LocationComponentPositionManagerTest.kt
│                           │       ├── LocationIndicatorLayerRendererTest.kt
│                           │       ├── LocationIndicatorLayerWrapperTest.kt
│                           │       ├── LocationLayerWrapperTest.kt
│                           │       ├── LocationPuckManagerTest.kt
│                           │       ├── ModelLayerRendererTest.kt
│                           │       ├── ModelLayerWrapperTest.kt
│                           │       ├── ModelSourceWrapperTest.kt
│                           │       ├── ShadowLocationServiceFactory.java
│                           │       ├── Utils.kt
│                           │       ├── animators/
│                           │       │   ├── EvaluatorsTest.kt
│                           │       │   ├── PuckAccuracyRadiusAnimatorTest.kt
│                           │       │   ├── PuckAnimatorManagerTest.kt
│                           │       │   ├── PuckBearingAnimatorTest.kt
│                           │       │   ├── PuckPositionAnimatorTest.kt
│                           │       │   └── PuckPulsingAnimatorTest.kt
│                           │       └── generated/
│                           │           └── LocationComponentAttributeParserTest.kt
│                           └── util/
│                               └── MockKExtensions.kt
├── plugin-logo/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-logo.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── logo/
│       │   │                       ├── LogoExt.kt
│       │   │                       ├── LogoViewImpl.kt
│       │   │                       ├── LogoViewPlugin.kt
│       │   │                       └── generated/
│       │   │                           └── LogoAttributeParser.kt
│       │   ├── res/
│       │   │   ├── values/
│       │   │   │   ├── attrs.xml
│       │   │   │   └── strings.xml
│       │   │   ├── values-ar/
│       │   │   │   └── strings.xml
│       │   │   ├── values-be/
│       │   │   │   └── strings.xml
│       │   │   ├── values-bg/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ca/
│       │   │   │   └── strings.xml
│       │   │   ├── values-cs/
│       │   │   │   └── strings.xml
│       │   │   ├── values-da/
│       │   │   │   └── strings.xml
│       │   │   ├── values-de/
│       │   │   │   └── strings.xml
│       │   │   ├── values-es/
│       │   │   │   └── strings.xml
│       │   │   ├── values-fr/
│       │   │   │   └── strings.xml
│       │   │   ├── values-gl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-it/
│       │   │   │   └── strings.xml
│       │   │   ├── values-iw/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ja/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ko/
│       │   │   │   └── strings.xml
│       │   │   ├── values-lt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-nl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-no/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pl/
│       │   │   │   └── strings.xml
│       │   │   ├── values-pt/
│       │   │   │   └── strings.xml
│       │   │   ├── values-ru/
│       │   │   │   └── strings.xml
│       │   │   ├── values-sv/
│       │   │   │   └── strings.xml
│       │   │   ├── values-uk/
│       │   │   │   └── strings.xml
│       │   │   ├── values-vi/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rCN/
│       │   │   │   └── strings.xml
│       │   │   ├── values-zh-rHK/
│       │   │   │   └── strings.xml
│       │   │   └── values-zh-rTW/
│       │   │       └── strings.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── logo/
│                                   ├── LogoViewImplPluginTest.kt
│                                   └── generated/
│                                       └── LogoAttributeParserTest.kt
├── plugin-overlay/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-overlay.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── overlay/
│       │                           ├── MapOverlayExt.kt
│       │                           └── MapOverlayPluginImpl.kt
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── overlay/
│                                   └── MapOverlayPluginTest.kt
├── plugin-scalebar/
│   ├── .gitignore
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-scalebar.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   └── scalebar/
│       │   │                       ├── LocaleUnitResolver.kt
│       │   │                       ├── ScaleBarConstant.kt
│       │   │                       ├── ScaleBarExt.kt
│       │   │                       ├── ScaleBarImpl.kt
│       │   │                       ├── ScaleBarPluginImpl.kt
│       │   │                       └── generated/
│       │   │                           └── ScaleBarAttributeParser.kt
│       │   ├── res/
│       │   │   └── values/
│       │   │       └── attrs.xml
│       │   └── res-public/
│       │       └── values/
│       │           └── public.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── scalebar/
│                                   ├── ScaleBarImplTest.kt
│                                   ├── ScaleBarPluginTest.kt
│                                   ├── ShadowProjection.java
│                                   └── generated/
│                                       └── ScaleBarAttributeParserTest.kt
├── plugin-viewport/
│   ├── README.md
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── plugin-viewport.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── kotlin/
│       │       └── com/
│       │           └── mapbox/
│       │               └── maps/
│       │                   └── plugin/
│       │                       └── viewport/
│       │                           ├── ViewportExt.kt
│       │                           ├── ViewportPluginImpl.kt
│       │                           ├── state/
│       │                           │   ├── FollowPuckViewportStateImpl.kt
│       │                           │   └── OverviewViewportStateImpl.kt
│       │                           ├── transition/
│       │                           │   ├── DefaultViewportTransitionImpl.kt
│       │                           │   ├── ImmediateViewportTransition.kt
│       │                           │   ├── MapboxViewportTransitionFactory.kt
│       │                           │   └── TransitionUtils.kt
│       │                           └── util/
│       │                               └── ViewportTelemetryEvents.kt
│       └── test/
│           └── kotlin/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           └── plugin/
│                               └── viewport/
│                                   ├── ViewportPluginImplTest.kt
│                                   ├── ViewportTestConstants.kt
│                                   ├── state/
│                                   │   ├── FollowPuckViewportStateImplTest.kt
│                                   │   └── OverviewViewportStateImplTest.kt
│                                   └── transition/
│                                       ├── DefaultViewportTransitionImplTest.kt
│                                       ├── ImmediateViewportTransitionImplTest.kt
│                                       ├── MapboxViewportTransitionFactoryTest.kt
│                                       └── TransitionUtilsTest.kt
├── scripts/
│   ├── check-permissions.py
│   ├── checksum-base.sh
│   ├── checksum.sh
│   ├── ci-circleci-start-pipeline.py
│   ├── ci-e2e-job-trigger-checker.sh
│   ├── ci-github-set-commit-status.py
│   ├── ci-weekly-trigger.py
│   ├── clean.sh
│   ├── install-pre-commit/
│   │   ├── install-pre-commit.sh
│   │   └── pre-commit.sh
│   ├── merge-gradle-dependency-output.py
│   ├── sanity-test/
│   │   ├── exclude-sanity-test-gen.json
│   │   ├── generate-sanity-test.js
│   │   └── template-sanity-test.ejs
│   ├── semver-check.sh
│   ├── start-internal-release-pipeline.py
│   ├── trigger-maps-documentation-deploy-steps.sh
│   └── update-android-docs.sh
├── sdk-base/
│   ├── .gitignore
│   ├── api/
│   │   ├── Release/
│   │   │   └── metalava.txt
│   │   └── sdk-base.api
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           ├── common/
│       │   │           │   └── MapboxMapsAndroidLogger.kt
│       │   │           └── maps/
│       │   │               ├── ClickInteraction.kt
│       │   │               ├── DragInteraction.kt
│       │   │               ├── ExtensionUtils.kt
│       │   │               ├── ImageHolder.kt
│       │   │               ├── LongClickInteraction.kt
│       │   │               ├── MapInteraction.java
│       │   │               ├── MapLoadingErrorDelegate.kt
│       │   │               ├── MapboxDelicateApi.kt
│       │   │               ├── MapboxExceptions.kt
│       │   │               ├── MapboxExperimental.kt
│       │   │               ├── MapboxLifecycleObserver.kt
│       │   │               ├── MapboxLogger.kt
│       │   │               ├── MapboxStyleManager.kt
│       │   │               ├── ThreadChecker.kt
│       │   │               ├── dsl/
│       │   │               │   └── CameraOptionsKtx.kt
│       │   │               ├── exception/
│       │   │               │   └── WorkerThreadException.kt
│       │   │               ├── extension/
│       │   │               │   ├── observable/
│       │   │               │   │   ├── EventsExtension.kt
│       │   │               │   │   ├── eventdata/
│       │   │               │   │   │   ├── CameraChangedEventData.kt
│       │   │               │   │   │   ├── MapIdleEventData.kt
│       │   │               │   │   │   ├── MapLoadedEventData.kt
│       │   │               │   │   │   ├── MapLoadingErrorEventData.kt
│       │   │               │   │   │   ├── RenderFrameFinishedEventData.kt
│       │   │               │   │   │   ├── RenderFrameStartedEventData.kt
│       │   │               │   │   │   ├── ResourceEventData.kt
│       │   │               │   │   │   ├── SourceAddedEventData.kt
│       │   │               │   │   │   ├── SourceDataLoadedEventData.kt
│       │   │               │   │   │   ├── SourceRemovedEventData.kt
│       │   │               │   │   │   ├── StyleDataLoadedEventData.kt
│       │   │               │   │   │   ├── StyleImageMissingEventData.kt
│       │   │               │   │   │   ├── StyleImageUnusedEventData.kt
│       │   │               │   │   │   └── StyleLoadedEventData.kt
│       │   │               │   │   └── model/
│       │   │               │   │       ├── DataSourceType.kt
│       │   │               │   │       ├── Error.kt
│       │   │               │   │       ├── MapLoadErrorType.kt
│       │   │               │   │       ├── RenderMode.kt
│       │   │               │   │       ├── Request.kt
│       │   │               │   │       ├── RequestPriority.kt
│       │   │               │   │       ├── RequestType.kt
│       │   │               │   │       ├── Response.kt
│       │   │               │   │       ├── ResponseErrorReason.kt
│       │   │               │   │       ├── ResponseSourceType.kt
│       │   │               │   │       ├── SourceDataType.kt
│       │   │               │   │       ├── StyleDataType.kt
│       │   │               │   │       └── TileID.kt
│       │   │               │   └── style/
│       │   │               │       └── StyleContract.kt
│       │   │               ├── geofencing/
│       │   │               │   └── MapGeofencingConsent.kt
│       │   │               ├── interactions/
│       │   │               │   ├── FeatureState.kt
│       │   │               │   ├── FeatureStateCallback.kt
│       │   │               │   ├── FeatureStateKey.kt
│       │   │               │   ├── FeaturesetFeature.kt
│       │   │               │   ├── QueryRenderedFeaturesetFeaturesCallback.kt
│       │   │               │   ├── TypedFeaturesetDescriptor.kt
│       │   │               │   └── standard/
│       │   │               │       └── generated/
│       │   │               │           ├── StandardBuildings.kt
│       │   │               │           ├── StandardBuildingsFeature.kt
│       │   │               │           ├── StandardBuildingsState.kt
│       │   │               │           ├── StandardBuildingsStateKey.kt
│       │   │               │           ├── StandardInteractionsExt.kt
│       │   │               │           ├── StandardLandmarkIcons.kt
│       │   │               │           ├── StandardLandmarkIconsFeature.kt
│       │   │               │           ├── StandardLandmarkIconsState.kt
│       │   │               │           ├── StandardLandmarkIconsStateKey.kt
│       │   │               │           ├── StandardPlaceLabels.kt
│       │   │               │           ├── StandardPlaceLabelsFeature.kt
│       │   │               │           ├── StandardPlaceLabelsState.kt
│       │   │               │           ├── StandardPlaceLabelsStateKey.kt
│       │   │               │           ├── StandardPoi.kt
│       │   │               │           ├── StandardPoiFeature.kt
│       │   │               │           ├── StandardPoiState.kt
│       │   │               │           └── StandardPoiStateKey.kt
│       │   │               ├── module/
│       │   │               │   ├── MapTelemetry.java
│       │   │               │   └── TelemetryEvent.kt
│       │   │               ├── plugin/
│       │   │               │   ├── ConfigProperties.kt
│       │   │               │   ├── ContextBinder.kt
│       │   │               │   ├── InvalidPluginConfigurationException.kt
│       │   │               │   ├── LifecyclePlugin.kt
│       │   │               │   ├── MapCameraPlugin.kt
│       │   │               │   ├── MapPlugin.kt
│       │   │               │   ├── MapSizePlugin.kt
│       │   │               │   ├── MapStyleObserverPlugin.kt
│       │   │               │   ├── Plugin.kt
│       │   │               │   ├── ViewPlugin.kt
│       │   │               │   ├── animation/
│       │   │               │   │   ├── CameraAnimationsLifecycleListener.kt
│       │   │               │   │   ├── CameraAnimationsPlugin.kt
│       │   │               │   │   ├── CameraAnimatorChangeListener.kt
│       │   │               │   │   ├── CameraAnimatorNullableChangeListener.kt
│       │   │               │   │   ├── CameraAnimatorOptions.kt
│       │   │               │   │   ├── CameraAnimatorType.kt
│       │   │               │   │   ├── MapAnimationOptions.kt
│       │   │               │   │   └── MapAnimationOwnerRegistry.kt
│       │   │               │   ├── annotation/
│       │   │               │   │   ├── Annotation.kt
│       │   │               │   │   ├── AnnotationConfig.kt
│       │   │               │   │   ├── AnnotationManager.kt
│       │   │               │   │   ├── AnnotationOptions.kt
│       │   │               │   │   ├── AnnotationPlugin.kt
│       │   │               │   │   ├── AnnotationSourceOptions.kt
│       │   │               │   │   ├── AnnotationType.kt
│       │   │               │   │   ├── ClusterAnnotationManager.kt
│       │   │               │   │   ├── ClusterFeature.kt
│       │   │               │   │   ├── ClusterOptions.kt
│       │   │               │   │   ├── OnAnnotationClickListener.kt
│       │   │               │   │   ├── OnAnnotationDragListener.kt
│       │   │               │   │   ├── OnAnnotationInteractionListener.kt
│       │   │               │   │   ├── OnAnnotationLongClickListener.kt
│       │   │               │   │   ├── OnClusterClickListener.kt
│       │   │               │   │   └── OnClusterLongClickListener.kt
│       │   │               │   ├── attribution/
│       │   │               │   │   ├── Attribution.kt
│       │   │               │   │   ├── AttributionDialogManager.kt
│       │   │               │   │   ├── AttributionParserConfig.kt
│       │   │               │   │   ├── AttributionPlugin.kt
│       │   │               │   │   ├── AttributionView.kt
│       │   │               │   │   ├── OnAttributionClickListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── AttributionSettingsBase.kt
│       │   │               │   │       ├── AttributionSettingsData.kt
│       │   │               │   │       └── AttributionSettingsInterface.kt
│       │   │               │   ├── compass/
│       │   │               │   │   ├── CompassPlugin.kt
│       │   │               │   │   ├── CompassView.kt
│       │   │               │   │   ├── OnCompassClickListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── CompassSettingsBase.kt
│       │   │               │   │       ├── CompassSettingsData.kt
│       │   │               │   │       └── CompassSettingsInterface.kt
│       │   │               │   ├── delegates/
│       │   │               │   │   ├── MapAttributionDelegate.kt
│       │   │               │   │   ├── MapCameraManagerDelegate.kt
│       │   │               │   │   ├── MapDelegateProvider.kt
│       │   │               │   │   ├── MapFeatureQueryDelegate.kt
│       │   │               │   │   ├── MapFeatureStateDelegate.kt
│       │   │               │   │   ├── MapInteractionDelegate.kt
│       │   │               │   │   ├── MapListenerDelegate.kt
│       │   │               │   │   ├── MapPluginExtensionsDelegate.kt
│       │   │               │   │   ├── MapPluginProviderDelegate.kt
│       │   │               │   │   ├── MapProjectionDelegate.kt
│       │   │               │   │   ├── MapTransformDelegate.kt
│       │   │               │   │   └── listeners/
│       │   │               │   │       ├── OnCameraChangeListener.kt
│       │   │               │   │       ├── OnMapIdleListener.kt
│       │   │               │   │       ├── OnMapLoadErrorListener.kt
│       │   │               │   │       ├── OnMapLoadedListener.kt
│       │   │               │   │       ├── OnRenderFrameFinishedListener.kt
│       │   │               │   │       ├── OnRenderFrameStartedListener.kt
│       │   │               │   │       ├── OnSourceAddedListener.kt
│       │   │               │   │       ├── OnSourceDataLoadedListener.kt
│       │   │               │   │       ├── OnSourceRemovedListener.kt
│       │   │               │   │       ├── OnStyleDataLoadedListener.kt
│       │   │               │   │       ├── OnStyleImageMissingListener.kt
│       │   │               │   │       ├── OnStyleImageUnusedListener.kt
│       │   │               │   │       └── OnStyleLoadedListener.kt
│       │   │               │   ├── gestures/
│       │   │               │   │   ├── GesturesListeners.kt
│       │   │               │   │   ├── GesturesPlugin.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── GesturesSettingsBase.kt
│       │   │               │   │       ├── GesturesSettingsData.kt
│       │   │               │   │       └── GesturesSettingsInterface.kt
│       │   │               │   ├── indoorselector/
│       │   │               │   │   ├── IndoorSelectorPlugin.kt
│       │   │               │   │   ├── IndoorSelectorView.kt
│       │   │               │   │   ├── OnFloorSelectedListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── IndoorSelectorSettingsBase.kt
│       │   │               │   │       ├── IndoorSelectorSettingsData.kt
│       │   │               │   │       └── IndoorSelectorSettingsInterface.kt
│       │   │               │   ├── lifecycle/
│       │   │               │   │   └── MapboxLifecyclePlugin.kt
│       │   │               │   ├── locationcomponent/
│       │   │               │   │   ├── LocationComponentPlugin.kt
│       │   │               │   │   ├── LocationConsumer.kt
│       │   │               │   │   ├── LocationProvider.kt
│       │   │               │   │   ├── OnIndicatorAccuracyRadiusChangedListener.kt
│       │   │               │   │   ├── OnIndicatorBearingChangedListener.kt
│       │   │               │   │   ├── OnIndicatorPositionChangedListener.kt
│       │   │               │   │   ├── PuckLocatedAtPointListener.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── LocationComponentSettingsBase.kt
│       │   │               │   │       ├── LocationComponentSettingsData.kt
│       │   │               │   │       └── LocationComponentSettingsInterface.kt
│       │   │               │   ├── logo/
│       │   │               │   │   ├── LogoPlugin.kt
│       │   │               │   │   ├── LogoView.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── LogoSettingsBase.kt
│       │   │               │   │       ├── LogoSettingsData.kt
│       │   │               │   │       └── LogoSettingsInterface.kt
│       │   │               │   ├── overlay/
│       │   │               │   │   ├── MapOverlayCoordinatesProvider.kt
│       │   │               │   │   ├── MapOverlayPlugin.kt
│       │   │               │   │   └── OnReframeFinished.kt
│       │   │               │   ├── scalebar/
│       │   │               │   │   ├── ScaleBar.kt
│       │   │               │   │   ├── ScaleBarPlugin.kt
│       │   │               │   │   └── generated/
│       │   │               │   │       ├── ScaleBarSettingsBase.kt
│       │   │               │   │       ├── ScaleBarSettingsData.kt
│       │   │               │   │       └── ScaleBarSettingsInterface.kt
│       │   │               │   └── viewport/
│       │   │               │       ├── CompletionListener.kt
│       │   │               │       ├── ViewportConstants.kt
│       │   │               │       ├── ViewportPlugin.kt
│       │   │               │       ├── ViewportStatus.kt
│       │   │               │       ├── ViewportStatusObserver.kt
│       │   │               │       ├── data/
│       │   │               │       │   ├── DefaultViewportTransitionOptions.kt
│       │   │               │       │   ├── FollowPuckViewportStateBearing.kt
│       │   │               │       │   ├── FollowPuckViewportStateOptions.kt
│       │   │               │       │   ├── OverviewViewportStateOptions.kt
│       │   │               │       │   ├── ViewportOptions.kt
│       │   │               │       │   └── ViewportStatusChangeReason.kt
│       │   │               │       ├── state/
│       │   │               │       │   ├── FollowPuckViewportState.kt
│       │   │               │       │   ├── OverviewViewportState.kt
│       │   │               │       │   ├── ViewportState.kt
│       │   │               │       │   └── ViewportStateDataObserver.kt
│       │   │               │       └── transition/
│       │   │               │           ├── DefaultViewportTransition.kt
│       │   │               │           └── ViewportTransition.kt
│       │   │               ├── threading/
│       │   │               │   └── AnimationThreadController.kt
│       │   │               └── util/
│       │   │                   ├── CameraOptionsUtils.kt
│       │   │                   ├── CoreGesturesHandler.kt
│       │   │                   └── MathUtils.kt
│       │   ├── ksp/
│       │   │   └── com/
│       │   │       └── mapbox/
│       │   │           └── maps/
│       │   │               └── plugin/
│       │   │                   ├── attribution/
│       │   │                   │   └── generated/
│       │   │                   │       └── AttributionSettings.kt
│       │   │                   ├── compass/
│       │   │                   │   └── generated/
│       │   │                   │       └── CompassSettings.kt
│       │   │                   ├── gestures/
│       │   │                   │   └── generated/
│       │   │                   │       └── GesturesSettings.kt
│       │   │                   ├── indoorselector/
│       │   │                   │   └── generated/
│       │   │                   │       └── IndoorSelectorSettings.kt
│       │   │                   ├── locationcomponent/
│       │   │                   │   └── generated/
│       │   │                   │       └── LocationComponentSettings.kt
│       │   │                   ├── logo/
│       │   │                   │   └── generated/
│       │   │                   │       └── LogoSettings.kt
│       │   │                   └── scalebar/
│       │   │                       └── generated/
│       │   │                           └── ScaleBarSettings.kt
│       │   └── res/
│       │       └── values/
│       │           └── strings.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── mapbox/
│                       └── maps/
│                           ├── EqualsHashCodeTest.kt
│                           ├── dsl/
│                           │   └── CameraOptionsKtxTest.kt
│                           ├── plugin/
│                           │   └── scalebar/
│                           │       └── ScaleBarSettingsUnitsTest.kt
│                           └── util/
│                               └── MathUtilsTest.kt
└── settings.gradle.kts
Download .txt
SYMBOL INDEX (182 symbols across 32 files)

FILE: android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/testing/CarJavaInterfaceChecker.java
  class CarJavaInterfaceChecker (line 23) | @MapboxExperimental
    method constructorMapboxCarMap (line 26) | void constructorMapboxCarMap(MapInitOptions mapInitOptions) {
    method getters (line 30) | void getters(MapboxCarMap mapboxCarMap) {
    method getters (line 39) | void getters(MapboxCarMapSurface mapboxCarMapSurface) {
    method createObserver (line 45) | private MapboxCarMapObserver createObserver() {
    method observers (line 70) | private void observers(MapboxCarMap mapboxCarMap) {
    method gestures (line 80) | private void gestures(MapboxCarMap mapboxCarMap) {
    method sessionDefaultInstaller (line 98) | private void sessionDefaultInstaller(Session session) {
    method sessionInstaller (line 108) | private void sessionInstaller(Session session) {
    method screenInstaller (line 118) | private void screenInstaller(Screen screen, MapboxCarMap mapboxCarMap) {

FILE: app/src/main/cpp/example_custom_layer.cpp
  type Error (line 54) | struct Error : std::runtime_error {
  function checkError (line 58) | void checkError(const char *cmd, const char *file, int line) {
  function checkLinkStatus (line 84) | void checkLinkStatus(GLuint program) {
  function checkCompileStatus (line 98) | void checkCompileStatus(GLuint shader) {
  function nativeInitialize (line 127) | void JNICALL nativeInitialize(JNIEnv*, jobject) {
  function nativeRender (line 159) | void JNICALL nativeRender(JNIEnv* env, jobject, jobject parameters) {
  function nativeContextLost (line 223) | void JNICALL nativeContextLost(JNIEnv*, jobject) {
  function nativeDeinitialize (line 228) | void JNICALL nativeDeinitialize(JNIEnv*, jobject, jfloat red, jfloat gre...
  function nativeSetColor (line 240) | void JNICALL nativeSetColor(JNIEnv*, jobject, jfloat red, jfloat green, ...
  function JNIEXPORT (line 248) | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
  function JNIEXPORT (line 272) | JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *, void *) {

FILE: app/src/main/java/com/mapbox/maps/testapp/examples/JavaInterfaceChecker.java
  class JavaInterfaceChecker (line 133) | @SuppressWarnings("unused")
    method getClusterLeaves (line 135) | private void getClusterLeaves(MapboxMap mapboxMap, String sourceId, Fe...
    method scaleBarSettings (line 141) | private void scaleBarSettings() {
    method logoSettings (line 165) | private void logoSettings() {
    method locationComponentSettings (line 176) | private void locationComponentSettings(LocationPuck locationPuck) {
    method gesturesSettings (line 188) | private void gesturesSettings(ScrollMode scrollMode, ScreenCoordinate ...
    method compassSettings (line 211) | private void compassSettings(Drawable drawable) {
    method attributionSettings (line 228) | private void attributionSettings() {
    method annotationManager (line 242) | private void annotationManager(AnnotationPlugin annotationPlugin, MapV...
    method attribution (line 249) | private void attribution() {
    method annotation (line 257) | private void annotation(String belowLayerId, String layerId, String so...
    method cameraTest (line 287) | private void cameraTest(MapboxMap mapboxMap, CameraOptions cameraOptio...
    method terrainTest (line 300) | private void terrainTest() {
    method addLayer (line 305) | private void addLayer(Style style, Layer layer, LayerPosition position) {
    method image9PatchTest (line 310) | private void image9PatchTest(Style style, Bitmap bitmap) {
    method formatSection (line 318) | private void formatSection(Expression expression) {
    method localization (line 325) | private void localization(Style style, Locale locale, List<String> lay...
    method featureState (line 330) | private void featureState(
    method mapSurface (line 352) | private void mapSurface(Context context, Surface surface, MapInitOptio...
    method locationPuck (line 357) | private void locationPuck(@DrawableRes int imageId, List<Float> floatL...
    method mapboxMapOverLoad (line 374) | private void mapboxMapOverLoad(MapView mapView, StyleContract.StyleExt...
    method mapInitOptionsOverloads (line 400) | private void mapInitOptionsOverloads(Context context,
    method mapboxOptions (line 415) | private void mapboxOptions() {
    method snapshotter (line 429) | private void snapshotter(Context context, MapSnapshotOptions options) {
    method cameraState (line 437) | private void cameraState(CameraState state, ScreenCoordinate screenCoo...
    method addSymbolLayer (line 442) | private void addSymbolLayer(Style style) {
    method cameraAnimations (line 458) | private void cameraAnimations(MapView mapView) {
    method gesture (line 501) | private void gesture(MapView mapView) {
    method locationComponent (line 589) | private void locationComponent(MapView mapView) {
    method logo (line 595) | private void logo(MapView mapView) {
    method overlay (line 599) | @OptIn(markerClass = MapboxExperimental.class)
    method scaleBar (line 604) | private void scaleBar(MapView mapView) {
    method viewport (line 608) | private void viewport(MapView mapView) {
    method debugOptions (line 622) | private void debugOptions(MapView mapView) {
    class CustomTelemetry (line 645) | private static class CustomTelemetry implements MapTelemetry {
      method onAppUserTurnstileEvent (line 646) | @Override
      method setUserTelemetryRequestState (line 651) | @Override
      method disableTelemetrySession (line 656) | @Override
      method onPerformanceEvent (line 661) | @Override
    method interactions (line 667) | @MapboxExperimental

FILE: app/src/main/java/com/mapbox/maps/testapp/examples/java/DSLStylingJavaActivity.java
  class DSLStylingJavaActivity (line 58) | public class DSLStylingJavaActivity extends AppCompatActivity implements...
    method onCreate (line 111) | @Override
    method onMapClick (line 132) | @Override
    method getDateTime (line 150) | private String getDateTime(Long time) {
    method createStyle (line 162) | private StyleContract.StyleExtension createStyle() {
    method run (line 213) | @Override

FILE: app/src/main/java/com/mapbox/maps/testapp/examples/java/RuntimeStylingJavaActivity.java
  class RuntimeStylingJavaActivity (line 56) | public class RuntimeStylingJavaActivity extends AppCompatActivity {
    method onCreate (line 205) | @Override
    method setUpStyle (line 214) | private void setUpStyle(Style style) {
    method addImage (line 233) | private void addImage(Style style) {
    method addSymbolSource (line 239) | private void addSymbolSource(Style style) {
    method addSymbolLayer (line 251) | private void addSymbolLayer(Style style) {
    method addFillSource (line 282) | private void addFillSource(Style style) {
    method setFillLayer (line 290) | private void setFillLayer(Style style) {
    method addFillExtrusionLayer (line 319) | private void addFillExtrusionLayer(Style style) {
    method addFillExtrusionLight (line 327) | private void addFillExtrusionLight(Style style) {
    method addImageSource (line 335) | private void addImageSource(Style style) {
    method addRasterLayer (line 342) | private void addRasterLayer(Style style) {
    method addLayerWithoutStyleExtension (line 347) | @OptIn(markerClass = MapboxDelicateApi.class)
    method onStart (line 394) | @Override
    method onStop (line 400) | @Override
    method onLowMemory (line 406) | @Override
    method onDestroy (line 412) | @Override

FILE: extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapboxCarMapGestureHandler.java
  type MapboxCarMapGestureHandler (line 15) | public interface MapboxCarMapGestureHandler {
    method onScroll (line 27) | default void onScroll(
    method onFling (line 46) | default void onFling(
    method onScale (line 65) | default void onScale(

FILE: extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapboxCarMapObserver.java
  type MapboxCarMapObserver (line 16) | public interface MapboxCarMapObserver {
    method onAttached (line 26) | default void onAttached(@NonNull MapboxCarMapSurface mapboxCarMapSurfa...
    method onDetached (line 41) | default void onDetached(@NonNull MapboxCarMapSurface mapboxCarMapSurfa...
    method onVisibleAreaChanged (line 55) | default void onVisibleAreaChanged(@NonNull Rect visibleArea, @NonNull ...
    method onStableAreaChanged (line 68) | default void onStableAreaChanged(@NonNull Rect stableArea, @NonNull Ed...

FILE: extension-style/src/test/java/android/util/Log.java
  class Log (line 3) | public class Log {
    method d (line 4) | public static int d(String tag, String msg) {
    method i (line 9) | public static int i(String tag, String msg) {
    method w (line 14) | public static int w(String tag, String msg) {
    method e (line 19) | public static int e(String tag, String msg) {

FILE: extension-style/src/test/java/com/mapbox/maps/extension/style/ShadowStyleManager.java
  class ShadowStyleManager (line 17) | @Implements(StyleManager.class)
    method getStyleLayerPropertyDefaultValue (line 26) | @Implementation
    method getStyleSourcePropertyDefaultValue (line 39) | @Implementation

FILE: maps-sdk/src/test/java/com/mapbox/maps/ShadowCameraManager.java
  class ShadowCameraManager (line 6) | @Implements(CameraManager.class)

FILE: maps-sdk/src/test/java/com/mapbox/maps/ShadowMap.java
  class ShadowMap (line 5) | @Implements(Map.class)

FILE: maps-sdk/src/test/java/com/mapbox/maps/ShadowMapRecorder.java
  class ShadowMapRecorder (line 5) | @Implements(MapRecorder.class)

FILE: maps-sdk/src/test/java/com/mapbox/maps/ShadowMapSnapshotter.java
  class ShadowMapSnapshotter (line 9) | @Implements(MapSnapshotter.class)
    method setStyleJson (line 12) | @Implementation
    method setCamera (line 17) | @Implementation

FILE: maps-sdk/src/test/java/com/mapbox/maps/ShadowStyleManager.java
  class ShadowStyleManager (line 6) | @Implements(StyleManager.class)

FILE: maps-sdk/src/test/java/com/mapbox/maps/attribution/AttributionParseTest.java
  class AttributionParseTest (line 14) | @RunWith(RobolectricTestRunner.class)
    method testParseAttributionStringSatellite (line 22) | @Test
    method testParseAttributionStringStreets (line 56) | @Test
    method testParseAttributionWithoutMapbox (line 86) | @Test
    method testParseAttributionArrayString (line 120) | @Test
    method testHideImproveThisMapAttributionArrayString (line 160) | @Test
    method testParseHideCopyrightAttributionArrayString (line 190) | @Test
    method testOutputWithoutCopyRightString (line 231) | @Test
    method testOutputWithCopyRightString (line 249) | @Test
    method testOutputWithoutCopyRightWithoutMapboxString (line 265) | @Test
    method testOutputWithCopyRightWithoutMapboxString (line 283) | @Test
    method testOutputSatelliteString (line 300) | @Test
    method testShortOpenStreetMapString (line 318) | @Test
    method testShortOpenStreetMapWithoutCopyrightString (line 336) | @Test
    method testWithImproveThisMapString (line 353) | @Test
    method testParseAttributionWithCustomStringAttribution (line 370) | @Test

FILE: maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowCancelable.java
  class ShadowCancelable (line 8) | @Implements(Cancelable.class)
    method cancel (line 10) | @Implementation

FILE: maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowCoordinateBounds.java
  class ShadowCoordinateBounds (line 11) | @Implements(CoordinateBounds.class)
    method north (line 13) | @Implementation
    method east (line 17) | @Implementation
    method south (line 21) | @Implementation
    method west (line 25) | @Implementation

FILE: maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowMapsResourceOptions.java
  class ShadowMapsResourceOptions (line 7) | @Implements(MapsResourceOptions.class)

FILE: maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowObservable.java
  class ShadowObservable (line 7) | @Implements(Observable.class)

FILE: plugin-annotation/src/test/java/com/mapbox/maps/plugin/annotation/ShadowProjection.java
  class ShadowProjection (line 14) | @Implements(Projection.class)
    method project (line 16) | @Implementation
    method unproject (line 21) | @Implementation

FILE: plugin-gestures/src/main/java/com/mapbox/maps/plugin/gestures/StandardGestureListenerShim.java
  class StandardGestureListenerShim (line 14) | class StandardGestureListenerShim extends StandardGestureDetector.Simple...
    method onSingleTapConfirmed (line 16) | @Override
    method onDoubleTap (line 21) | @Override
    method onDoubleTapEvent (line 26) | @Override
    method onDown (line 31) | @Override
    method onShowPress (line 36) | @Override
    method onSingleTapUp (line 41) | @Override
    method onScroll (line 46) | @Override
    method onLongPress (line 51) | @Override
    method onFling (line 56) | @Override

FILE: plugin-gestures/src/test/java/com/mapbox/maps/plugin/gestures/StandardGestureListenerTest.java
  class StandardGestureListenerTest (line 21) | @RunWith(RobolectricTestRunner.class)
    method setup (line 32) | @Before
    method tearDown (line 44) | @After
    method testOnDown (line 53) | @Test
    method testOnSingleTapUp (line 58) | @Test
    method testOnSingleTapConfirmed (line 63) | @Test
    method testOnDoubleTap (line 68) | @Test
    method testOnShowPress (line 73) | @Test
    method testOnDoubleTapEvent (line 78) | @Test
    method testOnLongPress (line 83) | @Test
    method testOnFlingNull (line 88) | @Test
    method testOnScroll (line 93) | @Test

FILE: plugin-locationcomponent/src/test/java/com/mapbox/maps/plugin/locationcomponent/ShadowLocationServiceFactory.java
  class ShadowLocationServiceFactory (line 23) | @Implements(LocationServiceFactory.class)
    method locationService (line 27) | @Implementation

FILE: plugin-scalebar/src/test/java/com/mapbox/maps/plugin/scalebar/ShadowProjection.java
  class ShadowProjection (line 12) | @Implements(Projection.class)
    method getMetersPerPixelAtLatitude (line 14) | @Implementation

FILE: scripts/check-permissions.py
  function load_apk_permissions (line 10) | def load_apk_permissions(args):
  function load_file (line 22) | def load_file(args):
  function update_file (line 27) | def update_file(args, permissions):

FILE: scripts/ci-circleci-start-pipeline.py
  function str2bool (line 13) | def str2bool(v):
  function TriggerPipeline (line 24) | def TriggerPipeline(slug, token, branch, params):
  function Main (line 46) | def Main():

FILE: scripts/ci-github-set-commit-status.py
  function SetCommitStatus (line 11) | def SetCommitStatus(slug, hash, token, params):
  function Main (line 25) | def Main():

FILE: scripts/ci-weekly-trigger.py
  function TriggerPipeline (line 10) | def TriggerPipeline(token, branch):
  function Main (line 32) | def Main():

FILE: scripts/merge-gradle-dependency-output.py
  function add_content (line 4) | def add_content(file_name):

FILE: scripts/start-internal-release-pipeline.py
  function triggerPipeline (line 11) | def triggerPipeline(slug, token, branch, params):
  function main (line 33) | def main():

FILE: sdk-base/src/main/java/com/mapbox/maps/MapInteraction.java
  class MapInteraction (line 8) | public abstract class MapInteraction {

FILE: sdk-base/src/main/java/com/mapbox/maps/module/MapTelemetry.java
  type MapTelemetry (line 12) | public interface MapTelemetry {
    method onAppUserTurnstileEvent (line 17) | void onAppUserTurnstileEvent();
    method setUserTelemetryRequestState (line 22) | void setUserTelemetryRequestState(boolean enabled);
    method disableTelemetrySession (line 27) | void disableTelemetrySession();
    method onPerformanceEvent (line 34) | void onPerformanceEvent(@Nullable Bundle data);
    method getUserTelemetryRequestState (line 41) | default boolean getUserTelemetryRequestState() {
Copy disabled (too large) Download .json
Condensed preview — 1734 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (21,959K chars).
[
  {
    "path": ".editorconfig",
    "chars": 618,
    "preview": "[*.{kt,kts}]\nindent_size=2\ninsert_final_newline=false\nktlint_standard_no-wildcard-imports=disabled\nktlint_standard_trail"
  },
  {
    "path": ".gitattributes",
    "chars": 344,
    "preview": "# Merge strategies\napp/src/main/AndroidManifest.xml merge=union\napp/src/main/res/values/example_categories.xml merge=uni"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 66,
    "preview": "* @mapbox/maps-android\n*.api @mapbox/maps-android @mapbox/maps-ios"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "chars": 489,
    "preview": "---\nname: Feature Request\nabout: To request a new feature, please provide detail on the outcome desired, solutions attem"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/issue_template.md",
    "chars": 626,
    "preview": "---\nname: Bug\nabout: This template should be used for reporting bugs and defects.\nlabels: 'bug :beetle:'\nassignees: ''\n-"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1793,
    "preview": "<!--\nThanks for submitting a pull request!\nPlease fill out the sections below to complete your submission.\nWe appreciate"
  },
  {
    "path": ".github/stale.yml",
    "chars": 703,
    "preview": "# Configuration for probot-stale - https://github.com/probot/stale\n\nexemptProjects: true\nexemptMilestones: true\n\nstaleLa"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 3043,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".gitignore",
    "chars": 476,
    "preview": "*.iml\n.gradle\n/local.properties\n/.idea/caches\n/.idea/libraries\n/.idea/modules.xml\n/.idea/workspace.xml\n/.idea/navEditor."
  },
  {
    "path": "CHANGELOG.md",
    "chars": 450887,
    "preview": "# Changelog for Mapbox Maps SDK for Android\n\nMapbox welcomes participation and contributions from everyone.\n\n> **16 KB P"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 843,
    "preview": "# Code of conduct\n\nEveryone is invited to participate in this project and public discussions: we want to create a welcom"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6464,
    "preview": "# Contributing\n\nWe welcome contributions to this project.\n\nIf you have a usage question about the Mapbox Maps SDK for An"
  },
  {
    "path": "DEVELOPING.md",
    "chars": 20422,
    "preview": "# Developing\n\nWelcome to the Mapbox Maps SDK for Android project. This document describes every step\nof the development "
  },
  {
    "path": "LICENSE.md",
    "chars": 151735,
    "preview": "### License\n\nMapbox Maps for Android version 11.23.0-SNAPSHOT-04-09--02-04.git-8a87ed7\nMapbox Maps Android SDK\n\nCopyrigh"
  },
  {
    "path": "Makefile",
    "chars": 2391,
    "preview": ".PHONY: check\ncheck:\n\t./gradlew ktlint lint;\n\t./gradlew clean dokkaHtml -Pmapbox.dokkaHtmlFlavor=release\n\n.PHONY: test\nt"
  },
  {
    "path": "README.md",
    "chars": 3216,
    "preview": "## Mapbox Maps SDK for Android\n\n[![CLA assistant](https://cla-assistant.io/readme/badge/mapbox/mapbox-maps-android)](htt"
  },
  {
    "path": "android-auto-app/build.gradle.kts",
    "chars": 2627,
    "preview": "plugins {\n  id(\"com.mapbox.gradle.application\")\n}\n\nandroid {\n  compileSdk = libs.versions.autoCompileSdkVersion.get().to"
  },
  {
    "path": "android-auto-app/src/main/AndroidManifest.xml",
    "chars": 2017,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/app/MainActivity.kt",
    "chars": 339,
    "preview": "package com.mapbox.maps.testapp.auto.app\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarAnimationThreadController.kt",
    "chars": 1190,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport android.os.Build\nimport com.mapbox.maps.MapboxExperimental\nimport com.m"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarCameraController.kt",
    "chars": 4930,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport android.graphics.Rect\nimport com.mapbox.geojson.Point\nimport com.mapbox"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarLocationPuck.kt",
    "chars": 1624,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport android.annotation.SuppressLint\nimport com.mapbox.maps.ImageHolder\nimpo"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapShowcase.kt",
    "chars": 1401,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport androidx.car.app.CarContext\nimport com.mapbox.bindgen.Value\nimport com."
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapWidgets.kt",
    "chars": 1638,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport com.mapbox.common.Cancelable\nimport com.mapbox.maps.MapboxExperimental\n"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/MapScreen.kt",
    "chars": 3940,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport androidx.car.app.CarToast\nimport androidx.car.app.Screen\nimport android"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/MapSession.kt",
    "chars": 2475,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport android.Manifest.permission.ACCESS_FINE_LOCATION\nimport android.content"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/RequestPermissionScreen.kt",
    "chars": 1142,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport android.Manifest.permission\nimport androidx.car.app.CarContext\nimport a"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/RetryScreen.kt",
    "chars": 1219,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport androidx.car.app.CarContext\nimport androidx.car.app.Screen\nimport andro"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/SearchScreen.kt",
    "chars": 1331,
    "preview": "package com.mapbox.maps.testapp.auto.car\n\nimport androidx.car.app.CarContext\nimport androidx.car.app.Screen\nimport andro"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/service/MapboxCarAppService.kt",
    "chars": 700,
    "preview": "package com.mapbox.maps.testapp.auto.service\n\nimport androidx.car.app.CarAppService\nimport androidx.car.app.Session\nimpo"
  },
  {
    "path": "android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/testing/CarJavaInterfaceChecker.java",
    "chars": 4754,
    "preview": "package com.mapbox.maps.testapp.auto.testing;\n\nimport android.graphics.Rect;\n\nimport androidx.annotation.NonNull;\nimport"
  },
  {
    "path": "android-auto-app/src/main/res/drawable/ic_pan_24.xml",
    "chars": 1235,
    "preview": "<!--\n  Copyright 2021 The Android Open Source Project\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "android-auto-app/src/main/res/drawable/ic_zoom_in_24.xml",
    "chars": 915,
    "preview": "<!--\n  Copyright 2021 The Android Open Source Project\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "android-auto-app/src/main/res/drawable/ic_zoom_out_24.xml",
    "chars": 897,
    "preview": "<!--\n  Copyright 2021 The Android Open Source Project\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "android-auto-app/src/main/res/layout/activity_main.xml",
    "chars": 836,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas."
  },
  {
    "path": "android-auto-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "chars": 265,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "android-auto-app/src/main/res/values/ic_launcher_background.xml",
    "chars": 120,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"ic_launcher_background\">#000000</color>\n</resources>"
  },
  {
    "path": "android-auto-app/src/main/res/values/strings.xml",
    "chars": 149,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"app_name\" translatable=\"false\">Mapbox Map for Andro"
  },
  {
    "path": "android-auto-app/src/main/res/values/themes.xml",
    "chars": 591,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n  <style name=\"AppTheme\" parent=\"@style/Theme.AppCompat.NoActionBar\">"
  },
  {
    "path": "android-auto-app/src/main/res/xml/automotive_app_desc.xml",
    "chars": 183,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<automotiveApp xmlns:tools=\"http://schemas.android.com/tools\">\n  <uses name=\"temp"
  },
  {
    "path": "app/build.gradle.kts",
    "chars": 4970,
    "preview": "plugins {\n  id(\"com.mapbox.gradle.application\")\n  id(\"com.mapbox.gradle.plugins.ndk\")\n}\n\napply {\n  from(\"$rootDir/gradle"
  },
  {
    "path": "app/lint.xml",
    "chars": 157,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<lint>\n    <!-- Disable the given check in this project -->\n    <issue id=\"IconDe"
  },
  {
    "path": "app/mapbox-services-proguard-rules.pro",
    "chars": 165,
    "preview": "# AutoValue are required by com.mapbox.api.directions.v5.MapboxDirections\n-dontwarn com.google.auto.value.AutoValue$Buil"
  },
  {
    "path": "app/permission.json",
    "chars": 434,
    "preview": "[\n    \"android.permission.ACCESS_BACKGROUND_LOCATION\",\n    \"android.permission.ACCESS_COARSE_LOCATION\",\n    \"android.per"
  },
  {
    "path": "app/proguard-rules.pro",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/retrofit2-proguard-rules.pro",
    "chars": 2044,
    "preview": "# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and\n# EnclosingMethod is req"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/BaseMapTest.kt",
    "chars": 1659,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.content.Context\nimport androidx.test.ext.junit.rules.ActivityScenarioRul"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/CameraForCoordinatesTest.kt",
    "chars": 9471,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.widget.FrameLayout\nimport androidx.test.ext.junit.rules.ActivityScenario"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/ExampleOverviewActivityTest.kt",
    "chars": 1294,
    "preview": "package com.mapbox.maps.testapp\n\nimport androidx.test.espresso.Espresso.onView\nimport androidx.test.espresso.action.View"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/GeoJsonSourceMutateTest.kt",
    "chars": 6136,
    "preview": "package com.mapbox.maps.testapp\n\nimport com.mapbox.common.Cancelable\nimport com.mapbox.geojson.Feature\nimport com.mapbox"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/LoadStyleCallbackTest.kt",
    "chars": 3195,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.app.Activity\nimport androidx.lifecycle.Lifecycle\nimport androidx.test.ex"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/Utils.kt",
    "chars": 650,
    "preview": "package com.mapbox.maps.testapp\n\nimport androidx.test.ext.junit.rules.ActivityScenarioRule\nimport java.util.concurrent.C"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/InteractionsTest.kt",
    "chars": 5861,
    "preview": "package com.mapbox.maps.testapp.annotation\n\nimport android.graphics.Color\nimport androidx.test.espresso.Espresso\nimport "
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/UpdateAnnotationTest.kt",
    "chars": 4610,
    "preview": "package com.mapbox.maps.testapp.annotation\n\nimport android.graphics.Color\nimport android.os.Handler\nimport android.os.Lo"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/UpdateAnnotationWithMultiManagersTest.kt",
    "chars": 6452,
    "preview": "package com.mapbox.maps.testapp.annotation\n\nimport android.graphics.Color\nimport android.os.Handler\nimport androidx.test"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/generated/CircleAnnotationManagerAndroidTest.kt",
    "chars": 16229,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.annotation.generated\n\nimport androidx.test.ext.junit.rules.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/generated/PointAnnotationManagerAndroidTest.kt",
    "chars": 45927,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.annotation.generated\n\nimport androidx.test.ext.junit.rules.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/generated/PolygonAnnotationManagerAndroidTest.kt",
    "chars": 19333,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.annotation.generated\n\nimport androidx.test.ext.junit.rules.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/annotation/generated/PolylineAnnotationManagerAndroidTest.kt",
    "chars": 27295,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.annotation.generated\n\nimport androidx.test.ext.junit.rules.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/attribution/AttributionAppCompatThemeTest.kt",
    "chars": 574,
    "preview": "package com.mapbox.maps.testapp.attribution\n\nimport androidx.test.ext.junit.rules.ActivityScenarioRule\nimport androidx.t"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/attribution/AttributionMaterialThemeTest.kt",
    "chars": 590,
    "preview": "package com.mapbox.maps.testapp.attribution\n\nimport androidx.test.ext.junit.rules.ActivityScenarioRule\nimport androidx.t"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/attribution/BaseAttributionThemeTest.kt",
    "chars": 724,
    "preview": "package com.mapbox.maps.testapp.attribution\n\nimport androidx.test.espresso.Espresso\nimport androidx.test.espresso.action"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/attribution/generated/AttributionAttributeParserDefaultValueTest.kt",
    "chars": 1798,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.attribution.generated\n\nimport android.graphics.Color\nimport "
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/attribution/generated/AttributionAttributeParserTest.kt",
    "chars": 2051,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.attribution.generated\n\nimport android.graphics.Color\nimport "
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/compass/generated/CompassAttributeParserDefaultValueTest.kt",
    "chars": 2161,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.compass.generated\n\nimport android.view.Gravity\nimport androi"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/compass/generated/CompassAttributeParserTest.kt",
    "chars": 2467,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.compass.generated\n\nimport android.view.Gravity\nimport androi"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/featurestate/FeatureStateTest.kt",
    "chars": 4066,
    "preview": "package com.mapbox.maps.testapp.featurestate\n\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport com.mapbox.bin"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/featurestate/StandardBuildingsFeatureStateTest.kt",
    "chars": 2887,
    "preview": "package com.mapbox.maps.testapp.featurestate\n\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport com.mapbox.geo"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/GestureActivityTest.kt",
    "chars": 12410,
    "preview": "package com.mapbox.maps.testapp.gestures\n\nimport androidx.test.espresso.Espresso.onView\nimport androidx.test.espresso.ma"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/GestureInterceptedOnViewAnnotationTest.kt",
    "chars": 3931,
    "preview": "package com.mapbox.maps.testapp.gestures\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport androidx.te"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/GestureMapIdleTest.kt",
    "chars": 5012,
    "preview": "package com.mapbox.maps.testapp.gestures\n\nimport androidx.test.espresso.Espresso\nimport androidx.test.espresso.matcher.V"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/GestureUiUtils.kt",
    "chars": 16173,
    "preview": "package com.mapbox.maps.testapp.gestures\n\nimport android.graphics.PointF\nimport android.os.SystemClock\nimport android.vi"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/generated/GesturesAttributeParserDefaultValueTest.kt",
    "chars": 3168,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.gestures.generated\n\nimport androidx.test.ext.junit.runners.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/gestures/generated/GesturesAttributeParserTest.kt",
    "chars": 3505,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.gestures.generated\n\nimport androidx.test.ext.junit.runners.A"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/BaseReuseIntegrationTest.kt",
    "chars": 2063,
    "preview": "package com.mapbox.maps.testapp.integration\n\nimport android.app.Activity\nimport android.view.KeyEvent\nimport androidx.te"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/events/StyleLoadedEventTest.kt",
    "chars": 2608,
    "preview": "package com.mapbox.maps.testapp.integration.events\n\nimport androidx.test.ext.junit.rules.ActivityScenarioRule\nimport and"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/fragment/EmptyFragment.kt",
    "chars": 718,
    "preview": "package com.mapbox.maps.testapp.integration.fragment\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/fragment/FragmentScenarioTest.kt",
    "chars": 3652,
    "preview": "package com.mapbox.maps.testapp.integration.fragment\n\nimport androidx.fragment.app.testing.launchFragmentInContainer\nimp"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/fragment/FragmentTest.kt",
    "chars": 3811,
    "preview": "package com.mapbox.maps.testapp.integration.fragment\n\nimport android.R\nimport android.widget.FrameLayout\nimport androidx"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/fragment/MapFragment.kt",
    "chars": 1346,
    "preview": "package com.mapbox.maps.testapp.integration.fragment\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/surface/MapViewSurfaceModeTest.kt",
    "chars": 382,
    "preview": "package com.mapbox.maps.testapp.integration.surface\n\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport com.map"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/surface/MapViewSurfaceModeWithRecyclerViewTest.kt",
    "chars": 2173,
    "preview": "package com.mapbox.maps.testapp.integration.surface\n\nimport androidx.recyclerview.widget.RecyclerView\nimport androidx.te"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/surface/SurfaceTest.kt",
    "chars": 471,
    "preview": "package com.mapbox.maps.testapp.integration.surface\n\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport com.map"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/integration/texture/MapViewTextureModeTest.kt",
    "chars": 386,
    "preview": "package com.mapbox.maps.testapp.integration.texture\n\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport com.map"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/locationcomponent/generated/LocationComponentAttributeParserDefaultValueTest.kt",
    "chars": 2368,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.locationcomponent.generated\n\nimport android.graphics.Color\ni"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/locationcomponent/generated/LocationComponentAttributeParserTest.kt",
    "chars": 2645,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.locationcomponent.generated\n\nimport android.graphics.Color\ni"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/logo/generated/LogoAttributeParserDefaultValueTest.kt",
    "chars": 1434,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.logo.generated\n\nimport android.view.Gravity\nimport androidx."
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/logo/generated/LogoAttributeParserTest.kt",
    "chars": 1698,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.logo.generated\n\nimport android.view.Gravity\nimport androidx."
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/observable/ObservableEventsTest.kt",
    "chars": 18115,
    "preview": "package com.mapbox.maps.testapp.observable\n\nimport androidx.annotation.UiThread\nimport androidx.core.content.ContextComp"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/overlay/MapOverlayPluginTest.kt",
    "chars": 4878,
    "preview": "package com.mapbox.maps.testapp.overlay\n\nimport android.view.View\nimport android.widget.FrameLayout\nimport androidx.test"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/scalebar/generated/ScaleBarAttributeParserDefaultValueTest.kt",
    "chars": 3403,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.scalebar.generated\n\nimport android.graphics.Color\nimport and"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/scalebar/generated/ScaleBarAttributeParserTest.kt",
    "chars": 3644,
    "preview": "// This file is generated.\n\npackage com.mapbox.maps.testapp.scalebar.generated\n\nimport android.graphics.Color\nimport and"
  },
  {
    "path": "app/src/androidTest/java/com/mapbox/maps/testapp/viewport/ViewportPluginTest.kt",
    "chars": 7196,
    "preview": "package com.mapbox.maps.testapp.viewport\n\nimport android.os.Handler\nimport android.os.Looper\nimport androidx.test.ext.ju"
  },
  {
    "path": "app/src/androidTest/res/layout/view_annotation.xml",
    "chars": 362,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    x"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 69033,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "app/src/main/assets/annotations.json",
    "chars": 1570,
    "preview": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Poi"
  },
  {
    "path": "app/src/main/assets/countries_hdi.json",
    "chars": 1550,
    "preview": "// Data: UN Human Development Index 2017 Europe extract\n// Source: https://ourworldindata.org/human-development-index\n[\n"
  },
  {
    "path": "app/src/main/assets/dva-sf-construction.geojson",
    "chars": 291,
    "preview": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"id\": \"construction-1\",\n      \"pro"
  },
  {
    "path": "app/src/main/assets/dva-sf-parkings.geojson",
    "chars": 1413,
    "preview": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"id\": \"parking-1\",\n      \"properti"
  },
  {
    "path": "app/src/main/assets/dva-sf-route-alternative.geojson",
    "chars": 63592,
    "preview": "{\n  \"type\": \"Feature\",\n  \"id\": \"route-sf-2\",\n  \"properties\": {},\n  \"geometry\": {\n    \"coordinates\": [\n      [\n        -1"
  },
  {
    "path": "app/src/main/assets/dva-sf-route-main.geojson",
    "chars": 36611,
    "preview": "{\n  \"type\": \"Feature\",\n  \"id\": \"route-sf-1\",\n  \"properties\": {},\n  \"geometry\": {\n    \"coordinates\": [\n      [\n        -1"
  },
  {
    "path": "app/src/main/assets/fragment-realestate-NY.json",
    "chars": 10965,
    "preview": "{\n    \"imports\": [\n        {\n            \"id\": \"standard\",\n            \"url\": \"mapbox://styles/mapbox/standard\",\n       "
  },
  {
    "path": "app/src/main/assets/from_crema_to_council_crest.geojson",
    "chars": 1002,
    "preview": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"properties\": {\n        \"name\": \"C"
  },
  {
    "path": "app/src/main/assets/long_route.json",
    "chars": 2699270,
    "preview": "{\"type\":\"Feature\",\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[-8.581071,41.162668],[-8.581098,41.162802],[-8.581146,"
  },
  {
    "path": "app/src/main/assets/maine_polygon.geojson",
    "chars": 930,
    "preview": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"properties\": {\n        \"name\": \"P"
  },
  {
    "path": "app/src/main/assets/multiple_geometry_example.geojson",
    "chars": 109451,
    "preview": "{\n   \"type\":\"FeatureCollection\",\n   \"features\":[\n      {\n         \"type\":\"Feature\",\n         \"properties\":{\n            "
  },
  {
    "path": "app/src/main/assets/navigation_route.json",
    "chars": 679877,
    "preview": "{\"routes\":[{\"weight_typical\":22891.49,\"duration_typical\":23763.41,\"weight_name\":\"auto\",\"weight\":23587.498,\"duration\":245"
  },
  {
    "path": "app/src/main/assets/sf_airport_route.geojson",
    "chars": 29363,
    "preview": "      {\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"properties\": {},\n      \"geo"
  },
  {
    "path": "app/src/main/cpp/CMakeLists.txt",
    "chars": 1201,
    "preview": "cmake_minimum_required(VERSION 3.10)\n\nif (NOT ANDROID_NDK_TOOLCHAIN_INCLUDED)\n    message(FATAL_ERROR \"-- Toolchain file"
  },
  {
    "path": "app/src/main/cpp/example_custom_layer.cpp",
    "chars": 10129,
    "preview": "#include <GLES2/gl2.h>\n#include <android/log.h>\n#include <jni.h>\n#include <sstream>\n\n// DEBUGGING\n\nconst char* LOG_TAG ="
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/EmptyActivity.kt",
    "chars": 123,
    "preview": "package com.mapbox.maps.testapp\n\nimport androidx.appcompat.app.AppCompatActivity\n\nclass EmptyActivity : AppCompatActivit"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/EmptyFragmentActivity.kt",
    "chars": 347,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.os.Bundle\nimport androidx.fragment.app.FragmentActivity\nimport com.mapbo"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/ExampleOverviewActivity.kt",
    "chars": 9188,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.annotation.SuppressLint\nimport android.content.ComponentName\nimport andr"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/MapboxApplication.kt",
    "chars": 3504,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.app.Application\nimport android.os.StrictMode\nimport com.mapbox.android.c"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/TestMapActivity.kt",
    "chars": 1131,
    "preview": "package com.mapbox.maps.testapp\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimport com.map"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/adapter/ExampleAdapter.kt",
    "chars": 1344,
    "preview": "package com.mapbox.maps.testapp.adapter\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/adapter/ExampleSectionAdapter.kt",
    "chars": 4313,
    "preview": "package com.mapbox.maps.testapp.adapter\n\nimport android.content.Context\nimport android.util.SparseArray\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/AnimatedImageSourceActivity.kt",
    "chars": 3041,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/BasicLocationPulsingCircleActivity.kt",
    "chars": 4357,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/CircleLayerClusteringActivity.kt",
    "chars": 6006,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport android.widget.T"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ClipLayerActivity.kt",
    "chars": 4212,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.view.Menu\nimport android.view.MenuItem"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/CustomAttributionActivity.kt",
    "chars": 6600,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.app.Activity\nimport android.app.AlertDialog\nimport android.cont"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/DSLStylingActivity.kt",
    "chars": 6772,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport android.widget.T"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/DebugModeActivity.kt",
    "chars": 14199,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.app.AlertDialog\nimport a"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/DistanceExpressionActivity.kt",
    "chars": 2647,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/EdgeToEdgeActivity.kt",
    "chars": 5256,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Build\nimport android.os.Bundle\nimport android.util.TypedValu"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ElevatedLineActivity.kt",
    "chars": 6241,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/FragmentBackStackActivity.kt",
    "chars": 2620,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/GeoJsonLayerInStackActivity.kt",
    "chars": 1368,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/GesturesActivity.kt",
    "chars": 15034,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/IconPropertyActivity.kt",
    "chars": 3769,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.BitmapFactory\nimport android.os.Bundle\nimport androidx"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ImageSourceActivity.kt",
    "chars": 1955,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/IndoorExampleActivity.kt",
    "chars": 3271,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/InsetMapActivity.kt",
    "chars": 7120,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/Interactive3DModelSourceActivity.kt",
    "chars": 10640,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.graphics.drawable.GradientDrawabl"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/JavaInterfaceChecker.java",
    "chars": 32048,
    "preview": "package com.mapbox.maps.testapp.examples;\n\nimport static com.mapbox.maps.extension.localization.StyleInterfaceExtensionK"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LargeGeojsonPerformanceActivity.kt",
    "chars": 4607,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LegacyOfflineActivity.kt",
    "chars": 3514,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.view.View\nimport androidx.appcompat.ap"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LocationComponentActivity.kt",
    "chars": 10859,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport android.view.Men"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LocationComponentAnimationActivity.kt",
    "chars": 4709,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.os.Handler\nimport android.os.Looper\nim"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LocationComponentModelAnimationActivity.kt",
    "chars": 27314,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.animation.ValueAnimator\nimport android.graphics.Color\nimport an"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/LocationTrackingActivity.kt",
    "chars": 4519,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.widget.Toast\nimport androidx.appcompat"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MapOverlayActivity.kt",
    "chars": 4123,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MapViewCustomizationActivity.kt",
    "chars": 4460,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.widget.LinearLayout\nimport androidx.ap"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MapboxMapRecorderActivity.kt",
    "chars": 2741,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.animation.Animator\nimport android.animation.AnimatorListenerAda"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MapboxStudioStyleActivity.kt",
    "chars": 564,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MultiDisplayActivity.kt",
    "chars": 3745,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.app.ActivityOptions\nimport android.content.Context\nimport andro"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/MultiMapActivity.kt",
    "chars": 1429,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/NinePatchImageActivity.kt",
    "chars": 2987,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.BitmapFactory\nimport android.os.Bundle\nimport androidx"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/OfflineActivity.kt",
    "chars": 18717,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.graphics.Color\nimport an"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/OngoingAnimationActivity.kt",
    "chars": 1516,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.animation.ValueAnimator\nimport android.os.Bundle\nimport android"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/OrnamentMarginActivity.kt",
    "chars": 2194,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.view.Gravity\nimport androidx.appcompat"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/RawExpressionActivity.kt",
    "chars": 1820,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/RawGeoJsonActivity.kt",
    "chars": 2473,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/RawSourceLayerActivity.kt",
    "chars": 2893,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/RuntimeStylingActivity.kt",
    "chars": 10362,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ScaleBarActivity.kt",
    "chars": 429,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SecondaryDisplayActivity.kt",
    "chars": 2520,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SecondaryDisplayPresentationActivity.kt",
    "chars": 7606,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.app.Presentation\nimport android.content.Context\nimport android."
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ShowHideLayersActivity.kt",
    "chars": 1995,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SimpleMapActivity.kt",
    "chars": 779,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SimulateNavigationRouteActivity.kt",
    "chars": 4500,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.view.WindowManager\nimport androidx.app"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SlotLayerActivity.kt",
    "chars": 5098,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SpaceStationLocationActivity.kt",
    "chars": 6439,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.BitmapFactory\nimport android.os.Bundle\nimport android."
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/StandardStyleActivity.kt",
    "chars": 8159,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.view.View\nimport android.widget.Toast\n"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/StandardStyleInteractionsActivity.kt",
    "chars": 6743,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.graphics.Color\nimport an"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/StyleCirclesCategoricallyActivity.kt",
    "chars": 2929,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/StyleSwitchActivity.kt",
    "chars": 3109,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport android.webkit.URLUtil\nimport android.widget.E"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SurfaceActivity.kt",
    "chars": 3905,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.animation.ValueAnimator\nimport android.annotation.SuppressLint\n"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/SurfaceRecyclerViewActivity.kt",
    "chars": 4123,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/TextureViewActivity.kt",
    "chars": 703,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/TextureViewAnimateActivity.kt",
    "chars": 2274,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.animation.ObjectAnimator\nimport android.os.Bundle\nimport androi"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/TintFillPatternActivity.kt",
    "chars": 3304,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Bitmap\nimport android.graphics.BitmapFactory\nimport an"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/TransparentBackgroundActivity.kt",
    "chars": 2331,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.net.Uri\nimport android.os.Bundle\nimport androidx.appcompat.app."
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/VectorTileSourceActivity.kt",
    "chars": 1534,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/ViewPagerActivity.kt",
    "chars": 2395,
    "preview": "@file:Suppress(\"DEPRECATION\")\n\npackage com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcom"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/WithinExpressionActivity.kt",
    "chars": 5801,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.graphics.Color\nimport android.os.Bundle\nimport androidx.appcomp"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/WmsSourceActivity.kt",
    "chars": 1638,
    "preview": "package com.mapbox.maps.testapp.examples\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/annotation/AnimatePointAnnotationActivity.kt",
    "chars": 5482,
    "preview": "package com.mapbox.maps.testapp.examples.annotation\n\nimport android.animation.TypeEvaluator\nimport android.animation.Val"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/annotation/AnnotationUtils.kt",
    "chars": 3468,
    "preview": "package com.mapbox.maps.testapp.examples.annotation\n\nimport android.content.Context\nimport android.widget.Toast\nimport c"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/camera/CameraPredefinedAnimatorsActivity.kt",
    "chars": 7871,
    "preview": "package com.mapbox.maps.testapp.examples.camera\n\nimport android.animation.Animator\nimport android.animation.AnimatorList"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/camera/LowLevelCameraAnimatorActivity.kt",
    "chars": 1767,
    "preview": "package com.mapbox.maps.testapp.examples.camera\n\nimport android.os.Bundle\nimport android.view.animation.AccelerateDecele"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/camera/RestrictBoundsActivity.kt",
    "chars": 5729,
    "preview": "package com.mapbox.maps.testapp.examples.camera\n\nimport android.annotation.SuppressLint\nimport android.graphics.Color\nim"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/coroutines/featurestate/FeatureStateActivity.kt",
    "chars": 9835,
    "preview": "package com.mapbox.maps.testapp.examples.coroutines.featurestate\n\nimport android.graphics.Color\nimport android.graphics."
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/CustomLayerActivity.kt",
    "chars": 2935,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport android.os.Bundle\nimport android.view.Menu\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/ExampleCustomLayer.kt",
    "chars": 6635,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport android.opengl.GLES20\nimport com.mapbox.maps.CustomLayerHos"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/NativeCustomLayerActivity.kt",
    "chars": 3153,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport android.os.Bundle\nimport android.view.Menu\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/NativeExampleCustomLayer.kt",
    "chars": 598,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport androidx.annotation.Keep\nimport com.mapbox.maps.CustomLayer"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/TriangleCustomLayer.kt",
    "chars": 8570,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport android.opengl.GLES20\nimport com.mapbox.geojson.Point\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/TriangleCustomLayerActivity.kt",
    "chars": 3473,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer\n\nimport android.os.Bundle\nimport android.view.Menu\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/Cube.kt",
    "chars": 1414,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport com.mapbox.geojson.Point\nimport com.mapbox.maps.Proje"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/CubeMesh.kt",
    "chars": 1798,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport com.mapbox.maps.Vec3\nimport kotlin.math.max\n\n/**\n * C"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/GlobeCustomLayerActivity.kt",
    "chars": 2561,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCo"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/GlobeCustomLayerHost.kt",
    "chars": 16451,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport android.opengl.GLES30.*\nimport android.os.SystemClock"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/Matrix4f.kt",
    "chars": 1336,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport android.opengl.Matrix\n\n@JvmInline\nvalue class Matrix4"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/Program.kt",
    "chars": 2919,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport android.opengl.GLES30.*\nimport com.mapbox.maps.logD\ni"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/Utils.kt",
    "chars": 2163,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport com.mapbox.geojson.Point\nimport com.mapbox.maps.Proje"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/VertexFloatBuffer.kt",
    "chars": 1359,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport com.mapbox.maps.Vec3\nimport java.nio.ByteBuffer\nimpor"
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/customlayer/globe/VertexIntBuffer.kt",
    "chars": 854,
    "preview": "package com.mapbox.maps.testapp.examples.customlayer.globe\n\nimport java.nio.ByteBuffer\nimport java.nio.ByteOrder\nimport "
  },
  {
    "path": "app/src/main/java/com/mapbox/maps/testapp/examples/datajoin/CountriesData.kt",
    "chars": 1355,
    "preview": "package com.mapbox.maps.testapp.examples.datajoin\n\nimport android.content.Context\nimport com.mapbox.maps.logE\nimport org"
  }
]

// ... and 1534 more files (download for full content)

About this extraction

This page contains the full source code of the mapbox/mapbox-maps-android GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1734 files (20.1 MB), approximately 5.4M tokens, and a symbol index with 182 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!