├── .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 │ ├── mipmap-hdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── values │ ├── ic_launcher_background.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ └── automotive_app_desc.xml ├── app ├── build.gradle.kts ├── lint.xml ├── permission.json ├── 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 │ │ │ ├── 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 │ ├── 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 │ ├── ic_launcher-web.png │ ├── 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 │ │ ├── FragmentBackStackActivity.kt │ │ ├── GeoJsonLayerInStackActivity.kt │ │ ├── GesturesActivity.kt │ │ ├── IconPropertyActivity.kt │ │ ├── ImageSourceActivity.kt │ │ ├── InsetMapActivity.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 │ │ ├── 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 │ │ │ ├── IconSizeChangeOnClickActivity.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-hdpi │ ├── android_symbol.xml │ ├── blue_round_nine.9.png │ ├── ic_clear.png │ ├── line_divider.xml │ ├── miami_beach.png │ ├── nps_picnic_area.png │ ├── nps_restrooms.png │ └── nps_trailhead.png │ ├── drawable-mdpi │ ├── android_symbol.xml │ ├── custom_compass.png │ ├── ic_clear.png │ ├── iss.png │ ├── line_divider.xml │ ├── miami_beach.png │ ├── pattern.png │ ├── southeast_radar_0.png │ ├── southeast_radar_1.png │ ├── southeast_radar_2.png │ └── southeast_radar_3.png │ ├── drawable-xhdpi │ ├── android_symbol.xml │ ├── ic_clear.png │ ├── line_divider.xml │ └── miami_beach.png │ ├── drawable-xxhdpi │ ├── android_symbol.xml │ ├── fill_pattern.png │ ├── ic_clear.png │ ├── line_divider.xml │ ├── miami_beach.png │ └── pink_dot.png │ ├── drawable-xxxhdpi │ ├── android_symbol.xml │ ├── ic_car_top.png │ ├── ic_clear.png │ ├── ic_taxi_top.png │ ├── line_divider.xml │ ├── mapbox_mylocation_icon_default.png │ └── miami_beach.png │ ├── 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 │ └── monochrome_lut.png │ ├── 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_empty_fab.xml │ ├── activity_example_overview.xml │ ├── activity_extended_geofencing.xml │ ├── activity_feature_state.xml │ ├── activity_fill_extrusion.xml │ ├── activity_gestures.xml │ ├── activity_heatmap_layer.xml │ ├── activity_icon_property.xml │ ├── activity_icon_size_change_on_click.xml │ ├── activity_image_source.xml │ ├── activity_inset_map.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_symbol.xml │ ├── menu_tilejson.xml │ └── menu_view_annotation.xml │ ├── mipmap-anydpi-v26 │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── raw │ └── moving_background_water.mp4 │ ├── 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 ├── 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 │ │ │ ├── DynamicViewAnnotationActivity.kt │ │ │ ├── PointAnnotationActivity.kt │ │ │ ├── PointAnnotationClusterActivity.kt │ │ │ ├── PolygonAnnotationActivity.kt │ │ │ ├── PolylineAnnotationActivity.kt │ │ │ └── ViewAnnotationActivity.kt │ │ ├── basic │ │ │ ├── DebugModeActivity.kt │ │ │ ├── MultiDisplayActivity.kt │ │ │ ├── MultiMapActivity.kt │ │ │ ├── QueryRenderedFeatureActivity.kt │ │ │ └── SimpleMapActivity.kt │ │ ├── location │ │ │ ├── LocationComponentActivity.kt │ │ │ └── NavigationSimulationActivity.kt │ │ ├── ornaments │ │ │ └── OrnamentCustomisationActivity.kt │ │ ├── style │ │ │ ├── AnimatedImageSourceActivity.kt │ │ │ ├── ClipLayerActivity.kt │ │ │ ├── ColorThemeActivity.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 │ ├── miami_beach.png │ ├── monochrome_lut.png │ ├── southeast_radar_0.png │ ├── southeast_radar_1.png │ ├── southeast_radar_2.png │ └── southeast_radar_3.png │ ├── mipmap-anydpi-v26 │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── values-night │ └── themes.xml │ └── values │ ├── colors.xml │ ├── example_categories.xml │ ├── example_descriptions.xml │ ├── example_titles.xml │ ├── ic_launcher_background.xml │ ├── strings.xml │ └── themes.xml ├── detekt.yml ├── 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 │ └── res │ │ └── values │ │ └── strings.xml │ ├── main │ ├── AndroidManifest.xml │ └── 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 │ │ ├── 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 │ │ │ ├── RasterArraySourceState.kt │ │ │ ├── RasterDemSourceState.kt │ │ │ ├── RasterSourceState.kt │ │ │ ├── SourceProperties.kt │ │ │ └── VectorSourceState.kt │ │ ├── standard │ │ ├── BaseStandardStyleConfigurationState.kt │ │ ├── BaseStandardStyleState.kt │ │ ├── MapboxStandardSatelliteStyle.kt │ │ ├── MapboxStandardStyle.kt │ │ ├── StandardSatelliteStyleConfigurationState.kt │ │ ├── StandardStyleConfigurationState.kt │ │ ├── StandardStyleState.kt │ │ └── generated │ │ │ └── StandardStyleInteractionsState.kt │ │ └── terrain │ │ ├── TerrainStateApplier.kt │ │ └── generated │ │ └── TerrainState.kt │ └── test │ └── java │ └── com │ └── mapbox │ └── maps │ └── extension │ └── compose │ ├── MapApplierTest.kt │ ├── MapNodeExt.kt │ ├── SimpleLayerPositionAwareNode.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-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 │ │ │ ├── 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 │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ └── 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 ├── 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 │ │ │ ├── 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 │ │ ├── RasterArraySourceTest.kt │ │ ├── RasterDemSourceTest.kt │ │ ├── RasterSourceTest.kt │ │ └── VectorSourceTest.kt │ ├── terrain │ └── generated │ │ └── TerrainTest.kt │ └── utils │ ├── ColorUtilsTest.kt │ ├── PromoteIdTest.kt │ └── TypeUtilsTest.kt ├── gradle.properties ├── gradle ├── commonlibs.versions.toml ├── dependency-updates.gradle ├── detekt.gradle ├── ktlint.gradle ├── libs.versions.toml ├── lint.gradle ├── metalava.gradle ├── pitest.gradle ├── play-publisher.gradle ├── script-git-version.gradle ├── track-public-apis.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.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 │ │ │ ├── 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 │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ ├── drawable-hdpi │ │ ├── mapbox_logo_helmet.png │ │ └── mapbox_logo_icon.png │ │ ├── drawable-mdpi │ │ ├── mapbox_logo_helmet.png │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xhdpi │ │ ├── mapbox_logo_helmet.png │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xxhdpi │ │ ├── mapbox_logo_helmet.png │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xxxhdpi │ │ ├── mapbox_logo_helmet.png │ │ └── mapbox_logo_icon.png │ │ ├── drawable │ │ ├── mapbox_logo_helmet.png │ │ ├── mapbox_logo_icon.png │ │ └── mapbox_rounded_corner.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-rCN │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── ids.xml │ │ └── strings.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 │ │ ├── MapboxTracingTest.kt │ │ ├── NativeMapTest.kt │ │ ├── NativeObserverTest.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 │ │ ├── EglConfigChooserTest.kt │ │ ├── FpsManagerTest.kt │ │ ├── MapboxRenderThreadTest.kt │ │ ├── MapboxRendererTest.kt │ │ ├── MapboxSurfaceHolderRendererTest.kt │ │ ├── MapboxSurfaceRendererTest.kt │ │ ├── MapboxTextureViewRendererTest.kt │ │ └── RenderHandlerThreadTest.kt │ │ └── shadows │ │ ├── ShadowCancelable.java │ │ ├── ShadowCoordinateBounds.java │ │ ├── ShadowEventsService.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 │ │ ├── CameraZoomAnimator.kt │ │ └── Evaluators.kt │ └── test │ ├── java │ └── com │ │ └── mapbox │ │ └── maps │ │ └── plugin │ │ └── animation │ │ ├── CameraAnimationsChangeListenersTest.kt │ │ ├── CameraAnimationsListenersTest.kt │ │ ├── CameraAnimationsPluginImplTest.kt │ │ ├── CameraAnimatorsFactoryTest.kt │ │ └── animator │ │ └── 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 │ │ └── 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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ ├── drawable │ │ ├── mapbox_attribution_default.xml │ │ ├── mapbox_attribution_selected.xml │ │ └── mapbox_attribution_selector.xml │ │ ├── layout │ │ └── mapbox_attribution_list_item.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-rCN │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ └── strings.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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ ├── drawable-hdpi │ │ └── mapbox_compass_icon.png │ │ ├── drawable-mdpi │ │ └── mapbox_compass_icon.png │ │ ├── drawable-xhdpi │ │ └── mapbox_compass_icon.png │ │ ├── drawable-xxhdpi │ │ └── mapbox_compass_icon.png │ │ ├── drawable-xxxhdpi │ │ └── mapbox_compass_icon.png │ │ ├── drawable │ │ └── mapbox_compass_icon.png │ │ ├── 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-rCN │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── dimens.xml │ │ └── strings.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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ └── values │ │ ├── attrs.xml │ │ ├── dimens.xml │ │ └── strings.xml │ └── test │ ├── java │ └── com │ │ └── mapbox │ │ └── maps │ │ └── plugin │ │ └── gestures │ │ ├── GestureOptionsTest.kt │ │ ├── GestureStateTest.kt │ │ ├── GesturesPluginTest.kt │ │ ├── StandardGestureListenerTest.java │ │ └── generated │ │ └── GesturesAttributeParserTest.kt │ └── resources │ └── robolectric.properties ├── 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-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-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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ ├── drawable-hdpi │ │ ├── mapbox_mylocation_icon_bearing.png │ │ └── mapbox_mylocation_icon_default.png │ │ ├── drawable-mdpi │ │ ├── mapbox_mylocation_icon_bearing.png │ │ └── mapbox_mylocation_icon_default.png │ │ ├── drawable-xhdpi │ │ ├── mapbox_mylocation_icon_bearing.png │ │ └── mapbox_mylocation_icon_default.png │ │ ├── drawable-xxhdpi │ │ ├── mapbox_mylocation_icon_bearing.png │ │ └── mapbox_mylocation_icon_default.png │ │ ├── drawable-xxxhdpi │ │ ├── mapbox_mylocation_icon_bearing.png │ │ └── mapbox_mylocation_icon_default.png │ │ ├── drawable │ │ ├── mapbox_info_bg_selector.xml │ │ ├── mapbox_info_icon_default.xml │ │ ├── mapbox_info_icon_selected.xml │ │ ├── mapbox_mylocation_bg_shape.xml │ │ ├── mapbox_mylocation_icon_bearing.png │ │ ├── mapbox_mylocation_icon_default.png │ │ ├── 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 │ └── 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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ ├── drawable-hdpi │ │ └── mapbox_logo_icon.png │ │ ├── drawable-mdpi │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xhdpi │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xxhdpi │ │ └── mapbox_logo_icon.png │ │ ├── drawable-xxxhdpi │ │ └── mapbox_logo_icon.png │ │ ├── drawable │ │ └── mapbox_logo_icon.png │ │ ├── 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-rCN │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ └── strings.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-public │ │ └── values │ │ │ └── public.xml │ └── res │ │ └── values │ │ └── attrs.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-compatibility-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 │ │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ └── util │ └── MathUtilsTest.kt └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{kt,kts}] 2 | indent_size=2 3 | insert_final_newline=false 4 | ktlint_standard_no-wildcard-imports=disabled 5 | ktlint_standard_trailing-comma-on-call-site=disabled 6 | ktlint_standard_trailing-comma-on-declaration-site=disabled 7 | ktlint_standard_annotation=disabled 8 | ktlint_standard_multiline-if-else=disabled 9 | ktlint_standard_argument-list-wrapping=disabled 10 | ktlint_standard_spacing-between-declarations-with-annotations=disabled 11 | ktlint_standard_spacing-between-declarations-with-comments=disabled 12 | ktlint_standard_no-empty-first-line-in-method-block=disabled 13 | ktlint_standard_argument-list-wrapping=disabled 14 | ktlint_standard_indent=disabled -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Merge strategies 2 | app/src/main/AndroidManifest.xml merge=union 3 | app/src/main/res/values/example_categories.xml merge=union 4 | app/src/main/res/values/example_descriptions.xml merge=union 5 | app/src/main/res/values/example_titles.xml merge=union 6 | CHANGELOG.md merge=union 7 | 8 | # Mark files as generated in Github PRs 9 | **/generated/* linguist-generated=true 10 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @mapbox/maps-android 2 | *.api @mapbox/maps-android @mapbox/maps-ios -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: To request a new feature, please provide detail on the outcome desired, solutions attempted and any suggested approaches. 4 | title: '' 5 | labels: 'feature :green apple:' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## New Feature 11 | 12 | <- Description of the feature being requested and any outcomes desired, an example use case, and any suggestions for solution -> 13 | 14 | ## Why 15 | <- 1-2 sentence description of why you're requesting this feature. What problem does it solve? Why is it valuable? -> 16 | 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /captures 12 | .externalNativeBuild 13 | .cxx 14 | **/build 15 | /.idea 16 | app/src/main/res/values/developer-config.xml 17 | app/src/androidTest/java/com/mapbox/maps/testapp/activity 18 | **/developer-config.xml 19 | node_modules/ 20 | gh_token.txt 21 | android-docs-repo 22 | examples.zip 23 | release-docs/ 24 | release-docs.zip 25 | /tmp/checksum.txt 26 | api_compat_report/ 27 | logs/ 28 | **/src/main/assets/sdk_versions/ 29 | -------------------------------------------------------------------------------- /android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.auto.app 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | import com.mapbox.maps.testapp.auto.R 6 | 7 | class MainActivity : AppCompatActivity() { 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_main) 11 | } 12 | } -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/android-auto-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android-auto-app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /android-auto-app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Mapbox Map for Android Auto 4 | -------------------------------------------------------------------------------- /android-auto-app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 16 | 17 | -------------------------------------------------------------------------------- /android-auto-app/src/main/res/xml/automotive_app_desc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/permission.json: -------------------------------------------------------------------------------- 1 | [ 2 | "android.permission.ACCESS_BACKGROUND_LOCATION", 3 | "android.permission.ACCESS_COARSE_LOCATION", 4 | "android.permission.ACCESS_FINE_LOCATION", 5 | "android.permission.ACCESS_NETWORK_STATE", 6 | "android.permission.ACCESS_WIFI_STATE", 7 | "android.permission.INTERNET", 8 | "android.permission.POST_NOTIFICATIONS", 9 | "android.permission.REORDER_TASKS", 10 | "com.mapbox.maps.testapp.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" 11 | ] -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/androidTest/java/com/mapbox/maps/testapp/attribution/AttributionAppCompatThemeTest.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.attribution 2 | 3 | import androidx.test.ext.junit.rules.ActivityScenarioRule 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | import com.mapbox.maps.testapp.TestMapActivity 6 | import org.junit.Rule 7 | import org.junit.Test 8 | import org.junit.runner.RunWith 9 | 10 | @RunWith(AndroidJUnit4::class) 11 | class AttributionAppCompatThemeTest : BaseAttributionThemeTest() { 12 | 13 | @get:Rule 14 | var activityRule: ActivityScenarioRule = ActivityScenarioRule( 15 | TestMapActivity::class.java 16 | ) 17 | @Test 18 | fun testAppCompatTheme() { 19 | clickAttribution() 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/com/mapbox/maps/testapp/integration/surface/MapViewSurfaceModeTest.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.integration.surface 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import com.mapbox.maps.testapp.examples.SimpleMapActivity 5 | import com.mapbox.maps.testapp.integration.BaseReuseIntegrationTest 6 | import org.junit.runner.RunWith 7 | 8 | @RunWith(AndroidJUnit4::class) 9 | class MapViewSurfaceModeTest : BaseReuseIntegrationTest(SimpleMapActivity::class.java) -------------------------------------------------------------------------------- /app/src/androidTest/java/com/mapbox/maps/testapp/integration/surface/SurfaceTest.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.integration.surface 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import com.mapbox.maps.testapp.examples.SurfaceActivity 5 | import com.mapbox.maps.testapp.integration.BaseReuseIntegrationTest 6 | import org.junit.runner.RunWith 7 | 8 | /** 9 | * Regression test that validates reopening an Activity with a surface using ContextMode.SHARED 10 | */ 11 | @RunWith(AndroidJUnit4::class) 12 | class SurfaceTest : BaseReuseIntegrationTest(SurfaceActivity::class.java) -------------------------------------------------------------------------------- /app/src/androidTest/java/com/mapbox/maps/testapp/integration/texture/MapViewTextureModeTest.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.integration.texture 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import com.mapbox.maps.testapp.examples.TextureViewActivity 5 | import com.mapbox.maps.testapp.integration.BaseReuseIntegrationTest 6 | import org.junit.runner.RunWith 7 | 8 | @RunWith(AndroidJUnit4::class) 9 | class MapViewTextureModeTest : BaseReuseIntegrationTest(TextureViewActivity::class.java) -------------------------------------------------------------------------------- /app/src/androidTest/res/layout/view_annotation.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/assets/dva-sf-construction.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "features": [ 4 | { 5 | "type": "Feature", 6 | "id": "construction-1", 7 | "properties": {}, 8 | "geometry": { 9 | "coordinates": [ 10 | -122.41444169500868, 11 | 37.6344580806383 12 | ], 13 | "type": "Point" 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /app/src/main/assets/ego_car.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/assets/ego_car.glb -------------------------------------------------------------------------------- /app/src/main/assets/sportcar.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/assets/sportcar.glb -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/EmptyActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | 5 | class EmptyActivity : AppCompatActivity() -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/EmptyFragmentActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp 2 | 3 | import android.os.Bundle 4 | import androidx.fragment.app.FragmentActivity 5 | import com.mapbox.maps.MapView 6 | 7 | class EmptyFragmentActivity : FragmentActivity() { 8 | 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | val mapView = MapView(this) 12 | setContentView(mapView) 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/examples/MapboxStudioStyleActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.examples 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | import com.mapbox.maps.testapp.databinding.ActivityStyleMapboxStudioBinding 6 | 7 | /** 8 | * Example of displaying a custom Mapbox-hosted style, the default style uri is set in layout file. 9 | */ 10 | class MapboxStudioStyleActivity : AppCompatActivity() { 11 | 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | val binding = ActivityStyleMapboxStudioBinding.inflate(layoutInflater) 15 | setContentView(binding.root) 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/examples/ScaleBarActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.examples 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | import com.mapbox.maps.testapp.R 6 | 7 | /** 8 | * Activity to showcase scale bar custom configuration using xml attributes. 9 | */ 10 | class ScaleBarActivity : AppCompatActivity() { 11 | 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | setContentView(R.layout.activity_scale_bar) 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/examples/fragment/MapViewPager.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.examples.fragment 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.SurfaceView 6 | import android.view.View 7 | import androidx.viewpager.widget.PagerTabStrip 8 | import androidx.viewpager.widget.ViewPager 9 | 10 | class MapViewPager( 11 | context: Context?, 12 | attrs: AttributeSet? 13 | ) : 14 | ViewPager(context!!, attrs) { 15 | override fun canScroll( 16 | v: View, 17 | checkV: Boolean, 18 | dx: Int, 19 | x: Int, 20 | y: Int 21 | ): Boolean { 22 | return v is SurfaceView || v is PagerTabStrip || super.canScroll(v, checkV, dx, x, y) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/model/IssModel.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class IssModel( 6 | @SerializedName("iss_position") var issPosition: IssPosition? = null, 7 | @SerializedName("message") var message: String? = null, 8 | @SerializedName("timestamp") var timestamp: Int? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/mapbox/maps/testapp/model/IssPosition.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.testapp.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class IssPosition( 6 | @SerializedName("latitude") var latitude: Double? = null, 7 | @SerializedName("longitude") var longitude: Double? = null 8 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/blue_round_nine.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/blue_round_nine.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/ic_clear.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/miami_beach.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/nps_picnic_area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/nps_picnic_area.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/nps_restrooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/nps_restrooms.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/nps_trailhead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-hdpi/nps_trailhead.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/custom_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/custom_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/ic_clear.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/iss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/iss.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/miami_beach.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/pattern.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/southeast_radar_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/southeast_radar_0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/southeast_radar_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/southeast_radar_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/southeast_radar_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/southeast_radar_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/southeast_radar_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-mdpi/southeast_radar_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xhdpi/ic_clear.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xhdpi/miami_beach.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/fill_pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxhdpi/fill_pattern.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxhdpi/ic_clear.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxhdpi/miami_beach.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/pink_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxhdpi/pink_dot.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_car_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxxhdpi/ic_car_top.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxxhdpi/ic_clear.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_taxi_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxxhdpi/ic_taxi_top.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable-xxxhdpi/miami_beach.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_dva_eta.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_dva_parking.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_airplanemode_active_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_refresh_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_callout_item_background.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_layers.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_layers_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_layers_clear.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_legacy_callout.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_paint.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_swap_horiz_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_translate_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/mapbox_mylocation_bg_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/monochrome_lut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/drawable/monochrome_lut.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_add_marker_symbol.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_animated_imagesource.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_animated_marker.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_dds_moving_icon_with_trailing_line.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_heatmap_layer.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_icon_property.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_icon_size_change_on_click.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_image_source.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_javaservices_snaking_directions_route.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_location_component.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_location_component_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_location_layer_basic_pulsing_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_mapview.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_multiple_geometries.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_recycler.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_secondary_display_presentation.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_style_mapbox_studio.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_style_vector_source.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_surface.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_terrain_showcase.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_texture_view.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_wms_source.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/generated_test_logo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_gesture_alert.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_map.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_spinner_view.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_clip_layer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_color_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_custom_layer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_tilejson.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_view_annotation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/raw/moving_background_water.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/app/src/main/res/raw/moving_background_water.mp4 -------------------------------------------------------------------------------- /app/src/main/res/values/actions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Update layer (invalidate) 4 | Red 5 | Green 6 | Blue 7 | Map Synchronized 8 | Map Fixed Delay 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #4264fb 4 | #003ac7 5 | #EE4E8B 6 | #F9F9F9 7 | #ee4e8b 8 | #33c377 9 | #1E8CAB 10 | #f74e4e 11 | #334264fb 12 | #000000 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/interpolators.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FastOutSlowInInterpolator 5 | CubicBezier [0, 0, 0.25, 1] 6 | FastOutLinearInInterpolator 7 | LinearOutSlowInInterpolator 8 | BounceInterpolator 9 | AnticipateInterpolator 10 | AnticipateOvershootInterpolator 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/map_wallpaper.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | status: 3 | project: 4 | default: 5 | target: auto 6 | threshold: 1% 7 | comment: 8 | layout: "reach, diff, flags, files" 9 | behavior: default 10 | require_changes: true 11 | 12 | -------------------------------------------------------------------------------- /compose-app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /compose-app/src/main/assets/dva-sf-construction.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "features": [ 4 | { 5 | "type": "Feature", 6 | "id": "construction-1", 7 | "properties": {}, 8 | "geometry": { 9 | "coordinates": [ 10 | -122.41444169500868, 11 | 37.6344580806383 12 | ], 13 | "type": "Point" 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /compose-app/src/main/assets/sportcar.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/assets/sportcar.glb -------------------------------------------------------------------------------- /compose-app/src/main/java/com/mapbox/maps/compose/testapp/examples/utils/CityLocations.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.compose.testapp.examples.utils 2 | 3 | import com.mapbox.geojson.Point 4 | 5 | internal object CityLocations { 6 | val HELSINKI: Point = Point.fromLngLat(24.941526986277893, 60.17099952463323) 7 | val BERLIN = Point.fromLngLat(13.403, 52.562) 8 | val KYIV = Point.fromLngLat(30.498, 50.541) 9 | val WASHINGTON = Point.fromLngLat(-77.00897, 38.87031) 10 | val NULLISLAND = Point.fromLngLat(0.0, 0.0) 11 | } 12 | 13 | /** 14 | * Produce a new [Point] that offsets [offset] in both latitude and longitude. 15 | */ 16 | internal fun Point.offset(offset: Double = 0.01) = 17 | Point.fromLngLat(longitude() + offset, latitude() + offset) -------------------------------------------------------------------------------- /compose-app/src/main/java/com/mapbox/maps/compose/testapp/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.compose.testapp.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | public val Purple200: Color = Color(0xFFBB86FC) 6 | public val Purple500: Color = Color(0xFF6200EE) 7 | public val Purple700: Color = Color(0xFF3700B3) 8 | public val Teal200: Color = Color(0xFF03DAC5) -------------------------------------------------------------------------------- /compose-app/src/main/java/com/mapbox/maps/compose/testapp/ui/theme/Shape.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.compose.testapp.ui.theme 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.material.Shapes 5 | import androidx.compose.ui.unit.dp 6 | 7 | public val Shapes: Shapes = Shapes( 8 | small = RoundedCornerShape(4.dp), 9 | medium = RoundedCornerShape(4.dp), 10 | large = RoundedCornerShape(0.dp) 11 | ) -------------------------------------------------------------------------------- /compose-app/src/main/java/com/mapbox/maps/compose/testapp/ui/theme/Type.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.compose.testapp.ui.theme 2 | 3 | import androidx.compose.material.Typography 4 | import androidx.compose.ui.text.TextStyle 5 | import androidx.compose.ui.text.font.FontFamily 6 | import androidx.compose.ui.text.font.FontWeight 7 | import androidx.compose.ui.unit.sp 8 | 9 | public val Typography: Typography = Typography( 10 | body1 = TextStyle( 11 | fontFamily = FontFamily.Default, 12 | fontWeight = FontWeight.Normal, 13 | fontSize = 16.sp 14 | ) 15 | ) -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/bg_dva_eta.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/bg_dva_parking.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/miami_beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/miami_beach.png -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/monochrome_lut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/monochrome_lut.png -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/southeast_radar_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/southeast_radar_0.png -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/southeast_radar_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/southeast_radar_1.png -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/southeast_radar_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/southeast_radar_2.png -------------------------------------------------------------------------------- /compose-app/src/main/res/drawable/southeast_radar_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/drawable/southeast_radar_3.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /compose-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/compose-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /compose-app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /compose-app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /compose-app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Compose Mapbox Map Test App 3 | -------------------------------------------------------------------------------- /extension-androidauto/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /extension-androidauto/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapSurfaceProvider.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.androidauto 2 | 3 | import android.content.Context 4 | import android.view.Surface 5 | import com.mapbox.maps.MapInitOptions 6 | import com.mapbox.maps.MapSurface 7 | 8 | /** 9 | * This provider is needed for creating unit tests. 10 | */ 11 | internal object MapSurfaceProvider { 12 | fun create( 13 | context: Context, 14 | surface: Surface, 15 | mapInitOptions: MapInitOptions 16 | ) = MapSurface(context, surface, mapInitOptions) 17 | } -------------------------------------------------------------------------------- /extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapboxCarMapEx.kt: -------------------------------------------------------------------------------- 1 | @file:kotlin.jvm.JvmName("MapboxCarMapEx") 2 | 3 | package com.mapbox.maps.extension.androidauto 4 | 5 | import androidx.car.app.Screen 6 | import androidx.car.app.Session 7 | import com.mapbox.maps.MapboxExperimental 8 | 9 | /** 10 | * Shorthand extension for installing the map onto a [Session]. 11 | */ 12 | @MapboxExperimental 13 | fun Session.mapboxMapInstaller() = MapboxCarMapSessionInstaller(this) 14 | 15 | /** 16 | * Shorthand extension for installing an experience onto a [Screen]. 17 | */ 18 | @MapboxExperimental 19 | fun Screen.mapboxMapInstaller(mapboxCarMap: MapboxCarMap) = 20 | MapboxCarMapScreenInstaller(this, mapboxCarMap) -------------------------------------------------------------------------------- /extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapboxCarTelemetryEvents.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.androidauto 2 | 3 | import com.mapbox.maps.module.TelemetryEvent 4 | 5 | internal object MapboxCarTelemetryEvents { 6 | val map = TelemetryEvent.create("androidauto/map") 7 | } -------------------------------------------------------------------------------- /extension-androidauto/src/test/java/com/mapbox/maps/extension/androidauto/testing/TestLifecycleOwner.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.androidauto.testing 2 | 3 | import androidx.lifecycle.Lifecycle 4 | import androidx.lifecycle.LifecycleOwner 5 | import androidx.lifecycle.LifecycleRegistry 6 | 7 | class TestLifecycleOwner : LifecycleOwner { 8 | private val lifecycleRegistry = LifecycleRegistry(this) 9 | .also { it.currentState = Lifecycle.State.INITIALIZED } 10 | 11 | override fun getLifecycle(): Lifecycle = lifecycleRegistry 12 | 13 | fun moveToState(state: Lifecycle.State) { 14 | lifecycleRegistry.currentState = state 15 | } 16 | } -------------------------------------------------------------------------------- /extension-compose/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /extension-compose/src/androidTest/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Compose instrumentation app 3 | -------------------------------------------------------------------------------- /extension-compose/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extension-compose/src/main/java/com/mapbox/maps/extension/compose/MapboxMapScope.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.compose 2 | 3 | import androidx.compose.runtime.Immutable 4 | 5 | /** 6 | * A MapboxMapScope provides a scope for the children of MapboxMap. 7 | */ 8 | @MapboxMapScopeMarker 9 | @Immutable 10 | public object MapboxMapScope { 11 | // Add needed extensions here 12 | } -------------------------------------------------------------------------------- /extension-compose/src/main/java/com/mapbox/maps/extension/compose/MapboxMapScopeMarker.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.compose 2 | 3 | /** 4 | * Marks the scope of DSL used within [MapboxMap] composable function. 5 | */ 6 | @DslMarker 7 | public annotation class MapboxMapScopeMarker -------------------------------------------------------------------------------- /extension-compose/src/main/java/com/mapbox/maps/extension/compose/internal/ComposeTelemetryEvents.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.compose.internal 2 | 3 | import com.mapbox.maps.module.TelemetryEvent 4 | 5 | internal object ComposeTelemetryEvents { 6 | val map = TelemetryEvent.create("compose/map") 7 | } -------------------------------------------------------------------------------- /extension-compose/src/main/java/com/mapbox/maps/extension/compose/style/internal/StyleAwareNode.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.compose.style.internal 2 | 3 | import com.mapbox.maps.extension.compose.internal.MapNode 4 | 5 | internal abstract class StyleAwareNode : MapNode() { 6 | abstract val mapStyleNode: MapStyleNode 7 | } -------------------------------------------------------------------------------- /extension-compose/src/test/java/com/mapbox/maps/extension/compose/MapNodeExt.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.compose 2 | 3 | import com.mapbox.maps.extension.compose.internal.LayerPositionAwareNode 4 | import com.mapbox.maps.extension.compose.internal.MapNode 5 | import org.junit.Assert 6 | 7 | internal fun MapNode.assertLayerIds(expected: List) { 8 | Assert.assertEquals( 9 | expected, 10 | children.map { (it as LayerPositionAwareNode).getLayerIds()[0] } 11 | ) 12 | } -------------------------------------------------------------------------------- /extension-localization/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /extension-localization/api/Release/metalava.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package com.mapbox.maps.extension.localization { 3 | 4 | public final class LocalizationKt { 5 | } 6 | 7 | public final class StyleInterfaceExtensionKt { 8 | method public static void localizeLabels(com.mapbox.maps.MapboxStyleManager, java.util.Locale locale, java.util.List? layerIds = null); 9 | method public static void localizeLabels(com.mapbox.maps.MapboxStyleManager, java.util.Locale locale); 10 | } 11 | 12 | public final class SupportedLanguagesKt { 13 | } 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /extension-localization/api/extension-localization.api: -------------------------------------------------------------------------------- 1 | public final class com/mapbox/maps/extension/localization/StyleInterfaceExtensionKt { 2 | public static final fun localizeLabels (Lcom/mapbox/maps/MapboxStyleManager;Ljava/util/Locale;)V 3 | public static final fun localizeLabels (Lcom/mapbox/maps/MapboxStyleManager;Ljava/util/Locale;Ljava/util/List;)V 4 | public static synthetic fun localizeLabels$default (Lcom/mapbox/maps/MapboxStyleManager;Ljava/util/Locale;Ljava/util/List;ILjava/lang/Object;)V 5 | } 6 | 7 | -------------------------------------------------------------------------------- /extension-style-app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/extension-style-app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /extension-style-app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /extension-style-lint-rules/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | lint-report.html -------------------------------------------------------------------------------- /extension-style-lint-rules/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry: -------------------------------------------------------------------------------- 1 | com.mapbox.maps.lint.style.StyleIssueRegistry -------------------------------------------------------------------------------- /extension-style/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /extension-style/src/main/java/com/mapbox/maps/extension/style/utils/StyleTelemetryEvents.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.style.utils 2 | 3 | import com.mapbox.maps.module.TelemetryEvent 4 | 5 | internal object StyleTelemetryEvents { 6 | val dsl = TelemetryEvent.create("style/dsl") 7 | } -------------------------------------------------------------------------------- /extension-style/src/test/java/android/util/Log.java: -------------------------------------------------------------------------------- 1 | package android.util; 2 | 3 | public class Log { 4 | public static int d(String tag, String msg) { 5 | System.out.println("DEBUG: " + tag + ": " + msg); 6 | return 0; 7 | } 8 | 9 | public static int i(String tag, String msg) { 10 | System.out.println("INFO: " + tag + ": " + msg); 11 | return 0; 12 | } 13 | 14 | public static int w(String tag, String msg) { 15 | System.out.println("WARN: " + tag + ": " + msg); 16 | return 0; 17 | } 18 | 19 | public static int e(String tag, String msg) { 20 | System.out.println("ERROR: " + tag + ": " + msg); 21 | return 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gradle/commonlibs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | 3 | # Mapbox NDK Gradle Plugin will read these versions to figure out what NDK versions are supported in 4 | # this codebase. 5 | defaultNdkMajor = "23" 6 | ndkMajor23 = "23.2.8568313" 7 | ndkMajor27 = "27.0.12077973" -------------------------------------------------------------------------------- /gradle/ktlint.gradle: -------------------------------------------------------------------------------- 1 | configurations { 2 | ktlint 3 | } 4 | 5 | dependencies { 6 | ktlint "com.pinterest:ktlint:0.48.2" 7 | } 8 | 9 | task ktlint(type: JavaExec, group: "verification") { 10 | description = "Check Kotlin code style." 11 | classpath = configurations.ktlint 12 | main = "com.pinterest.ktlint.Main" 13 | args "src/**/*.kt", "!**/ksp/**/*.kt" 14 | } 15 | 16 | task ktlintFormat(type: JavaExec, group: "formatting") { 17 | description = "Fix Kotlin code style deviations." 18 | classpath = configurations.ktlint 19 | main = "com.pinterest.ktlint.Main" 20 | args "-F", "src/**/*.kt", "!**/ksp/**/*.kt" 21 | } -------------------------------------------------------------------------------- /gradle/lint.gradle: -------------------------------------------------------------------------------- 1 | android { 2 | lintOptions { 3 | checkReleaseBuilds false 4 | warningsAsErrors true 5 | abortOnError false 6 | xmlReport false 7 | disable 'AllowBackup', 'UnusedResources' 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /gradle/pitest.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'pl.droidsonroids.pitest' 2 | 3 | pitest { 4 | pitestVersion = '1.7.6' 5 | avoidCallsTo = ['kotlin.jvm.internal'] 6 | threads = Runtime.getRuntime().availableProcessors() 7 | outputFormats = ['XML', 'HTML'] 8 | timestampedReports = false 9 | jvmArgs = ['-Xmx4096m'] 10 | verbose = true 11 | exportLineCoverage = true 12 | 13 | // https://pitest.org/quickstart/mutators/ 14 | mutators = ['DEFAULTS', 'CONSTRUCTOR_CALLS', 'EMPTY_RETURNS', 'FALSE_RETURNS', 15 | 'NULL_RETURNS', 'REMOVE_CONDITIONALS', 'REMOVE_INCREMENTS', 'EXPERIMENTAL_SWITCH'] 16 | 17 | excludedClasses = [] 18 | 19 | // Use feature EXPORT for debug 20 | // features = ["+EXPORT"] 21 | } 22 | -------------------------------------------------------------------------------- /gradle/play-publisher.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.github.triplet.play' 2 | 3 | play { 4 | track = findProperty("releaseTrack") as String ?: "internal" 5 | serviceAccountCredentials = file("test-app-play-publisher.json") 6 | defaultToAppBundles = true 7 | } -------------------------------------------------------------------------------- /gradle/script-git-version.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | // use unix time to set unique version code. Note: google playstore max version code value is 2100000000 3 | // this gives us expiration date till 2635. 4 | gitVersionCode = (System.currentTimeSeconds() / 10).intValue() 5 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Sep 04 18:43:58 EEST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip 7 | -------------------------------------------------------------------------------- /mapbox-convention-plugin/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | versionCatalogs { 3 | create("libs") { 4 | from(files("$rootDir/../gradle/libs.versions.toml")) 5 | } 6 | } 7 | } 8 | 9 | rootProject.name = "MapboxConventionPlugin" -------------------------------------------------------------------------------- /mapbox-convention-plugin/src/main/kotlin/com/mapbox/maps/gradle/plugins/internal/MapboxDependencies.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.gradle.plugins.internal 2 | 3 | internal object MapboxDependencies { 4 | internal val Common = VersionCatalogDependency( 5 | group = "com.mapbox.common", 6 | artifact = "common", 7 | versionRef = "mapboxCommon", 8 | supportsNdkVariant = true 9 | ) 10 | 11 | internal val GlNative = VersionCatalogDependency( 12 | group = "com.mapbox.maps", 13 | // v11.9 snapshots or earlier should use `android-core-internal` as `artifact`. 14 | artifact = "android-core", 15 | versionRef = "mapboxGlNative", 16 | supportsNdkVariant = true 17 | ) 18 | } -------------------------------------------------------------------------------- /maps-sdk/README.md: -------------------------------------------------------------------------------- 1 | # The Mapbox Maps SDK Full for Android 2 | 3 | The Mapbox Maps SDK Full is a fully-featured version of the Mapbox Maps SDK for Android for those less concerned with binary size. 4 | 5 | The Maps SDK Full includes all functionality of the Maps SDK Lite, in addition to complex visualization layers and functionality such as heatmaps, data clustering, and full support for Expressions. 6 | -------------------------------------------------------------------------------- /maps-sdk/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keep class com.google.gson.** {*;} 2 | -keep class com.mapbox.geojson.** {*;} 3 | -keep class com.mapbox.bindgen.** {*;} 4 | -keep class !com.mapbox.maps.extension.**,!com.mapbox.maps.plugin.**,com.mapbox.maps.** {*;} 5 | -keep class com.mapbox.mapboxsdk.log.** {*;} 6 | -keep class com.mapbox.common.** {*;} 7 | -keep class com.mapbox.mapboxsdk.text.** {*;} -------------------------------------------------------------------------------- /maps-sdk/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /maps-sdk/src/androidTest/java/com/mapbox/maps/EmptyActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | import android.os.Bundle 4 | import android.view.ViewGroup 5 | import android.widget.FrameLayout 6 | import androidx.appcompat.app.AppCompatActivity 7 | 8 | class EmptyActivity : AppCompatActivity() { 9 | 10 | lateinit var frameLayout: FrameLayout 11 | 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | frameLayout = FrameLayout(this) 15 | frameLayout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) 16 | setContentView(frameLayout) 17 | } 18 | } -------------------------------------------------------------------------------- /maps-sdk/src/androidTest/res/layout/view_annotation.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /maps-sdk/src/androidTest/res/layout/view_annotation_wrap_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /maps-sdk/src/androidTest/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | SDK instrumentation app 3 | -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/DelegatingMapClient.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | internal interface DelegatingMapClient : MapClient -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/SnapshotOverlayCallback.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | /** 4 | * A block which can be used to obtain a [SnapshotOverlay] to draw custom content directly over the snapshot image. 5 | */ 6 | fun interface SnapshotOverlayCallback { 7 | 8 | /** 9 | * Invoked when snapshot overlay has been prepared. 10 | */ 11 | fun onSnapshotOverlay(overlay: SnapshotOverlay) 12 | } -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/SnapshotOverlayOptions.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | /** 4 | * Data class to config the overlays on the snapshotter 5 | * 6 | * @param showLogo whether show Mapbox logo on the taken snapshot 7 | * @param showAttributes whether show attribution on the taken snapshot 8 | */ 9 | 10 | data class SnapshotOverlayOptions @JvmOverloads constructor( 11 | val showLogo: Boolean = true, 12 | val showAttributes: Boolean = true 13 | ) -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/SnapshotResultCallback.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | import android.graphics.Bitmap 4 | 5 | /** 6 | * Callback invoked when obtaining the map snapshot. 7 | */ 8 | fun interface SnapshotResultCallback { 9 | 10 | /** 11 | * If snapshot was successful - [snapshot] will contain the actual [Bitmap] with an actual map snapshot result. 12 | * If snapshot was not successful - [snapshot] will be NULL and [errorMessage] will contain the error message. 13 | */ 14 | fun onSnapshotResult(snapshot: Bitmap?, errorMessage: String?) 15 | } -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/SnapshotterDestroyedException.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | /** 4 | * Runtime exception thrown when the [Snapshotter] has already been destroyed. 5 | */ 6 | class SnapshotterDestroyedException : IllegalStateException("This snapshotter was already destroyed.") -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/attribution/AttributionLayout.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.attribution 2 | 3 | import android.graphics.Bitmap 4 | import android.graphics.PointF 5 | 6 | /** 7 | * Class representing attribution properties. 8 | */ 9 | data class AttributionLayout( 10 | /** 11 | * [Bitmap] logo. 12 | */ 13 | val logo: Bitmap?, 14 | /** 15 | * [x, y] anchor point for placing the logo on the screen. 16 | */ 17 | val anchorPoint: PointF?, 18 | /** 19 | * If set to `true` shorter text version will be used. 20 | */ 21 | val isShortText: Boolean 22 | ) -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/plugin/InvalidViewPluginHostException.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | /** 4 | * Exception thrown when a [ViewPlugin] is loaded in a context that doesn't have a view hierarchy associated. 5 | * @param message The exception message 6 | */ 7 | class InvalidViewPluginHostException(message: String) : Exception(message) -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/renderer/OnFpsChangedListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.renderer 2 | 3 | import com.mapbox.maps.MapView 4 | 5 | /** 6 | * Interface definition for a callback to be invoked when a frame is rendered to the map view. 7 | * Important note: [onFpsChanged] is called on non-UI thread. 8 | * 9 | * @see [MapView.setOnFpsChangedListener] 10 | */ 11 | fun interface OnFpsChangedListener { 12 | /** 13 | * Called on non-UI thread for every frame rendered to the map view. 14 | * 15 | * @param fps The average number of frames rendered over the last second. 16 | */ 17 | @RenderThread 18 | fun onFpsChanged(fps: Double) 19 | } -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/renderer/RenderThread.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.renderer 2 | 3 | /** 4 | * Denotes that the annotated method should only be called on a Mapbox render thread. 5 | * If the annotated element is a class, then all methods in the class should be called 6 | * on a Mapbox render thread. 7 | */ 8 | @MustBeDocumented 9 | @Retention(AnnotationRetention.SOURCE) 10 | @Target( 11 | AnnotationTarget.FUNCTION, 12 | AnnotationTarget.PROPERTY_GETTER, 13 | AnnotationTarget.PROPERTY_SETTER, 14 | AnnotationTarget.CONSTRUCTOR, 15 | AnnotationTarget.CLASS, 16 | ) 17 | annotation class RenderThread -------------------------------------------------------------------------------- /maps-sdk/src/main/java/com/mapbox/maps/viewannotation/ViewAnnotationVisibility.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.viewannotation 2 | 3 | internal enum class ViewAnnotationVisibility { 4 | /** 5 | * Initial state, track it separately for several corner cases. 6 | */ 7 | INITIAL, 8 | 9 | /** 10 | * View is set to be visible based on Android view visibility obtained from OnGlobalLayoutListener 11 | * but view will actually be positioned later based on [VISIBLE_AND_POSITIONED]. 12 | */ 13 | VISIBLE_AND_NOT_POSITIONED, 14 | 15 | /** 16 | * View is totally visible for the user. 17 | */ 18 | VISIBLE_AND_POSITIONED, 19 | 20 | /** 21 | * View is either removed from layout or not visible. 22 | */ 23 | INVISIBLE, 24 | } -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-hdpi/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-hdpi/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-hdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-hdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-mdpi/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-mdpi/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-mdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-mdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable/mapbox_logo_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable/mapbox_logo_helmet.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/maps-sdk/src/main/res/drawable/mapbox_logo_icon.png -------------------------------------------------------------------------------- /maps-sdk/src/main/res/drawable/mapbox_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | تحسين هذه الخريطة 3 | Mapbox القياس عن بعد 4 | سياسة خصوصية Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-be/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Палепшыць карту 3 | Mapbox Тэлеметрыя 4 | Палітыка прыватнасці Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Подобрете тази карта 3 | Телеметрия на Mapbox 4 | Правила за поверителност на Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Millora aquest mapa 3 | Telemetria de Mapbox 4 | Política de privadesa de Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Vylepšete tuto mapu 3 | Telemetrie Mapboxu 4 | Zásady ochrany osobních údajů Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Forbedre dette kort 3 | Mapbox Telemetri 4 | Mapbox Privatlivspolitik 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Verbessere diese Karte 3 | Mapbox-Telemetrie 4 | Mapbox-Datenschutzrichtlinie 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mejorar este mapa 3 | Telemetría de Mapbox 4 | Política de privacidad de Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Améliorer cette carte 3 | Télémétrie Mapbox 4 | Politique de confidentialité de Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mellora este mapa 3 | Telemetría Mapbox 4 | Política de privacidade de Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Migliora questa mappa 3 | Telemetria Mapbox 4 | Informativa sulla privacy di Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | שפר את המפה הזו 3 | Mapbox Telemetry 4 | מדיניות הפרטיות של Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | この地図を改善してください 3 | マップボックス テレメトリ 4 | マップボックスのプライバシーポリシー 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 이 지도를 개선하세요 3 | Mapbox 원격 측정 4 | Mapbox 개인정보 보호정책 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Patobulinkite šį žemėlapį 3 | „Mapbox“ telemetrija 4 | „Mapbox“ privatumo politika 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Verbeter deze kaart 3 | Mapbox-telemetrie 4 | Mapbox-privacybeleid 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-no/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Forbedre dette kartet 3 | Mapbox Telemetri 4 | Mapbox personvernerklæring 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Popraw tę mapę 3 | Telemetria Mapboxa 4 | Polityka prywatności Mapboxa 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Melhore este mapa 3 | Telemetria Mapbox 4 | Política de Privacidade da Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Улучшить карту 3 | Mapbox Телеметрия 4 | Политика конфиденциальности Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Förbättra den här kartan 3 | Mapbox Telemetri 4 | Mapbox sekretesspolicy 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Поліпшити картку 3 | Mapbox Телеметрія 4 | Політика конфіденційності Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Cải thiện bản đồ này 3 | Đo từ xa Mapbox 4 | Chính sách quyền riêng tư của Mapbox 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 完善地图 3 | Telemetry设置 4 | Mapbox隐私政策 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 完善地圖 3 | Telemetry設置 4 | Mapbox隱私權政策 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 完善地圖 3 | Telemetry設置 4 | Mapbox隱私權政策 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 改进这张地图 3 | Mapbox 遥测 4 | Mapbox 隐私政策 5 | 6 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #5F5F5F 4 | #7D7F80 5 | #1E8CAB 6 | 7 | #4A90E2 8 | #A1B0C0 9 | 10 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /maps-sdk/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Improve This Map 3 | Mapbox Telemetry 4 | Mapbox Privacy Policy 5 | Mapbox Geofencing 6 | 7 | -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowCameraManager.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | 4 | import org.robolectric.annotation.*; 5 | 6 | @Implements(CameraManager.class) 7 | public class ShadowCameraManager { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowMap.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | import org.robolectric.annotation.Implements; 4 | 5 | @Implements(Map.class) 6 | public class ShadowMap { 7 | } -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowMapRecorder.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | import org.robolectric.annotation.Implements; 4 | 5 | @Implements(MapRecorder.class) 6 | public class ShadowMapRecorder { 7 | } 8 | -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowMapSnapshotter.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | import androidx.annotation.*; 4 | 5 | import com.mapbox.maps.*; 6 | 7 | import org.robolectric.annotation.*; 8 | 9 | @Implements(MapSnapshotter.class) 10 | public class ShadowMapSnapshotter { 11 | 12 | @Implementation 13 | public void setStyleJson(){ 14 | 15 | } 16 | 17 | @Implementation 18 | public void setCamera(@NonNull CameraOptions cameraOptions){ 19 | 20 | } 21 | } -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowStyleManager.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | 4 | import org.robolectric.annotation.*; 5 | 6 | @Implements(StyleManager.class) 7 | public class ShadowStyleManager { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/ShadowTracing.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | import org.robolectric.annotation.Implements 4 | 5 | @Implements(Tracing::class) 6 | class ShadowTracing { 7 | 8 | companion object { 9 | fun setTracingBackendType(type: TracingBackendType) { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowCancelable.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.shadows; 2 | 3 | 4 | import com.mapbox.common.Cancelable; 5 | import org.robolectric.annotation.Implementation; 6 | import org.robolectric.annotation.Implements; 7 | 8 | @Implements(Cancelable.class) 9 | public class ShadowCancelable { 10 | @Implementation 11 | public void cancel() { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowMapsResourceOptions.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.shadows; 2 | 3 | import com.mapbox.maps.MapsResourceOptions; 4 | 5 | import org.robolectric.annotation.Implements; 6 | 7 | @Implements(MapsResourceOptions.class) 8 | public class ShadowMapsResourceOptions { 9 | } -------------------------------------------------------------------------------- /maps-sdk/src/test/java/com/mapbox/maps/shadows/ShadowObservable.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.shadows; 2 | 3 | import com.mapbox.maps.*; 4 | 5 | import org.robolectric.annotation.*; 6 | 7 | @Implements(Observable.class) 8 | public class ShadowObservable { 9 | } -------------------------------------------------------------------------------- /maps-sdk/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=28 -------------------------------------------------------------------------------- /metalava/metalava.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/metalava/metalava.jar -------------------------------------------------------------------------------- /module-telemetry/api/Release/metalava.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package com.mapbox.maps.module.telemetry { 3 | 4 | @com.mapbox.annotation.module.MapboxModule(type=com.mapbox.annotation.module.MapboxModuleType.MapTelemetry) public final class MapTelemetryImpl implements com.mapbox.maps.module.MapTelemetry { 5 | ctor public MapTelemetryImpl(android.content.Context appContext); 6 | method public void disableTelemetrySession(); 7 | method public void onAppUserTurnstileEvent(); 8 | method public void onPerformanceEvent(android.os.Bundle? data); 9 | method public void setUserTelemetryRequestState(boolean enabled); 10 | } 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /module-telemetry/api/module-telemetry.api: -------------------------------------------------------------------------------- 1 | public final class com/mapbox/maps/module/telemetry/MapTelemetryImpl : com/mapbox/maps/module/MapTelemetry { 2 | public fun (Landroid/content/Context;)V 3 | public fun disableTelemetrySession ()V 4 | public fun onAppUserTurnstileEvent ()V 5 | public fun onPerformanceEvent (Landroid/os/Bundle;)V 6 | public fun setUserTelemetryRequestState (Z)V 7 | } 8 | 9 | public final class com/mapbox/module/Mapbox_MapTelemetryModuleConfiguration { 10 | public static final field INSTANCE Lcom/mapbox/module/Mapbox_MapTelemetryModuleConfiguration; 11 | public static final fun getEnableConfiguration ()Z 12 | public static final fun getImplClass ()Ljava/lang/Class; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /module-telemetry/src/main/java/com/mapbox/maps/module/telemetry/MapBaseEvent.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.module.telemetry 2 | 3 | import android.annotation.SuppressLint 4 | import com.google.gson.annotations.SerializedName 5 | 6 | /** 7 | * Base event class for telemetry events. 8 | */ 9 | @SuppressLint("ParcelCreator") 10 | internal abstract class MapBaseEvent(phoneState: PhoneState) { 11 | @SerializedName("event") 12 | val event: String 13 | 14 | @SerializedName("created") 15 | val created: String 16 | 17 | init { 18 | event = this.getEventName() 19 | created = phoneState.created 20 | } 21 | 22 | abstract fun getEventName(): String 23 | } -------------------------------------------------------------------------------- /module-telemetry/src/main/java/com/mapbox/maps/module/telemetry/MapEventFactory.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.module.telemetry 2 | 3 | import android.os.Bundle 4 | import com.mapbox.common.TelemetrySystemUtils 5 | 6 | internal object MapEventFactory { 7 | fun buildMapLoadEvent(phoneState: PhoneState): MapLoadEvent { 8 | val userId = TelemetrySystemUtils.obtainUniversalUniqueIdentifier() 9 | return MapLoadEvent(userId, phoneState) 10 | } 11 | 12 | fun buildPerformanceEvent( 13 | phoneState: PhoneState, 14 | sessionId: String, 15 | data: Bundle 16 | ): PerformanceEvent { 17 | return PerformanceEvent(phoneState, sessionId, data) 18 | } 19 | } -------------------------------------------------------------------------------- /plugin-animation/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-animation/src/main/java/com/mapbox/maps/plugin/animation/HighLevelAnimatorSet.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.animation 2 | 3 | import android.animation.AnimatorSet 4 | import com.mapbox.common.Cancelable 5 | import com.mapbox.maps.MapboxExperimental 6 | import com.mapbox.maps.threading.AnimationThreadController 7 | 8 | internal data class HighLevelAnimatorSet( 9 | val owner: String?, 10 | val animatorSet: AnimatorSet 11 | ) : Cancelable { 12 | 13 | @OptIn(MapboxExperimental::class) 14 | override fun cancel() { 15 | AnimationThreadController.postOnAnimatorThread { 16 | animatorSet.cancel() 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /plugin-animation/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=28 -------------------------------------------------------------------------------- /plugin-annotation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /plugin-annotation/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-annotation/consumer-rules.pro -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/QueryAnnotationCallback.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Callback for query annotation 5 | */ 6 | fun interface QueryAnnotationCallback { 7 | /** 8 | * Get the queried annotation 9 | */ 10 | fun onQueryAnnotation(annotations: T) 11 | } -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnCircleAnnotationClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a circleAnnotation has been clicked. 9 | */ 10 | fun interface OnCircleAnnotationClickListener : OnAnnotationClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnCircleAnnotationDragListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationDragListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a circleAnnotation is dragged. 9 | */ 10 | interface OnCircleAnnotationDragListener : OnAnnotationDragListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnCircleAnnotationInteractionListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationInteractionListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a circleAnnotation has been selected or deselected. 9 | */ 10 | interface OnCircleAnnotationInteractionListener : OnAnnotationInteractionListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnCircleAnnotationLongClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationLongClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a circleAnnotation has been long clicked. 9 | */ 10 | fun interface OnCircleAnnotationLongClickListener : OnAnnotationLongClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPointAnnotationClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a pointAnnotation has been clicked. 9 | */ 10 | fun interface OnPointAnnotationClickListener : OnAnnotationClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPointAnnotationDragListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationDragListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a pointAnnotation is dragged. 9 | */ 10 | interface OnPointAnnotationDragListener : OnAnnotationDragListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPointAnnotationInteractionListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationInteractionListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a pointAnnotation has been selected or deselected. 9 | */ 10 | interface OnPointAnnotationInteractionListener : OnAnnotationInteractionListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPointAnnotationLongClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationLongClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a pointAnnotation has been long clicked. 9 | */ 10 | fun interface OnPointAnnotationLongClickListener : OnAnnotationLongClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolygonAnnotationClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polygonAnnotation has been clicked. 9 | */ 10 | fun interface OnPolygonAnnotationClickListener : OnAnnotationClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolygonAnnotationDragListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationDragListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polygonAnnotation is dragged. 9 | */ 10 | interface OnPolygonAnnotationDragListener : OnAnnotationDragListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolygonAnnotationInteractionListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationInteractionListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polygonAnnotation has been selected or deselected. 9 | */ 10 | interface OnPolygonAnnotationInteractionListener : OnAnnotationInteractionListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolygonAnnotationLongClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationLongClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polygonAnnotation has been long clicked. 9 | */ 10 | fun interface OnPolygonAnnotationLongClickListener : OnAnnotationLongClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolylineAnnotationClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polylineAnnotation has been clicked. 9 | */ 10 | fun interface OnPolylineAnnotationClickListener : OnAnnotationClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolylineAnnotationDragListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationDragListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polylineAnnotation is dragged. 9 | */ 10 | interface OnPolylineAnnotationDragListener : OnAnnotationDragListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolylineAnnotationInteractionListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationInteractionListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polylineAnnotation has been selected or deselected. 9 | */ 10 | interface OnPolylineAnnotationInteractionListener : OnAnnotationInteractionListener -------------------------------------------------------------------------------- /plugin-annotation/src/main/java/com/mapbox/maps/plugin/annotation/generated/OnPolylineAnnotationLongClickListener.kt: -------------------------------------------------------------------------------- 1 | // This file is generated. 2 | 3 | package com.mapbox.maps.plugin.annotation.generated 4 | 5 | import com.mapbox.maps.plugin.annotation.OnAnnotationLongClickListener 6 | 7 | /** 8 | * Interface definition for a callback to be invoked when a polylineAnnotation has been long clicked. 9 | */ 10 | fun interface OnPolylineAnnotationLongClickListener : OnAnnotationLongClickListener -------------------------------------------------------------------------------- /plugin-annotation/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=28 -------------------------------------------------------------------------------- /plugin-attribution/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /plugin-attribution/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-attribution/consumer-rules.pro -------------------------------------------------------------------------------- /plugin-attribution/src/main/res/drawable/mapbox_attribution_default.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /plugin-attribution/src/main/res/drawable/mapbox_attribution_selected.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /plugin-attribution/src/main/res/drawable/mapbox_attribution_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /plugin-attribution/src/main/res/layout/mapbox_attribution_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /plugin-attribution/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #1E8CAB 4 | -------------------------------------------------------------------------------- /plugin-attribution/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=28 -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable-hdpi/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable-hdpi/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable-mdpi/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable-mdpi/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable-xhdpi/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable-xhdpi/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable-xxhdpi/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable-xxhdpi/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable-xxxhdpi/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable-xxxhdpi/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/drawable/mapbox_compass_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-compass/src/main/res/drawable/mapbox_compass_icon.png -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | بوصلة الخريطة. قم بالتنشيط لإعادة ضبط دوران الخريطة إلى الشمال. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-be/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Компас. Актывуйце, каб разгарнуць карту на поўнач. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Компас на картата. Активирайте, за да нулирате завъртането на картата на север. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Brúixola del mapa. Activeu-lo per restablir la rotació del mapa al nord. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapový kompas. Aktivací obnovíte otočení mapy na sever. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Kort kompas. Aktiver for at nulstille kortrotationen til nord. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Kartenkompass. Aktivieren Sie diese Option, um die Kartendrehung auf Norden zurückzusetzen. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Brújula del mapa. Actívelo para restablecer la rotación del mapa hacia el norte. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Boussole cartographique. Activez pour réinitialiser la rotation de la carte vers le Nord. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Compás do mapa. Active para restablecer a rotación do mapa ao norte. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Bussola della mappa. Attiva per reimpostare la rotazione della mappa verso Nord. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | מצפן מפה. הפעל כדי לאפס את סיבוב המפה לצפון. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 地図コンパス。有効にすると、マップの回転が北にリセットされます。 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 지도 나침반. 지도 회전을 북쪽으로 재설정하려면 활성화하세요. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Žemėlapio kompasas. Suaktyvinkite, kad iš naujo nustatytumėte žemėlapio pasukimą į šiaurę. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Kaart kompas. Activeer om de kaartrotatie naar het noorden te resetten. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-no/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Kart kompass. Aktiver for å tilbakestille kartrotasjonen til nord. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapa kompasu. Aktywuj, aby zresetować obrót mapy na północ. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Bússola do mapa. Ative para redefinir a rotação do mapa para Norte. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Компас. Активируйте, чтобы развернуть карту на север. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Karta kompass. Aktivera för att återställa kartrotationen till norr. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Компас. Активуйте, щоб скинути обертання карти на північ. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | La bàn bản đồ. Kích hoạt để đặt lại vòng xoay bản đồ về hướng Bắc. 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 地图指南针。激活可将地图旋转重置为北。 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 地圖指南針。啟動可將地圖旋轉重置為北。 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 地圖指南針。啟動可將地圖旋轉重置為北。 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 地图指南针。激活可将地图旋转重置为北。 3 | 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48dp 4 | -------------------------------------------------------------------------------- /plugin-compass/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Map compass. Activate to reset the map rotation to North. 4 | 5 | -------------------------------------------------------------------------------- /plugin-gestures/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-gestures/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /plugin-gestures/src/test/resources/robolectric.properties: -------------------------------------------------------------------------------- 1 | sdk=28 -------------------------------------------------------------------------------- /plugin-lifecycle-lint-rules/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | lint-report.html -------------------------------------------------------------------------------- /plugin-lifecycle-lint-rules/src/main/java/com/mapbox/maps/lint/lifecycle/LifecycleIssueRegistry.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.lint.lifecycle 2 | 3 | import com.android.tools.lint.client.api.IssueRegistry 4 | import com.android.tools.lint.client.api.Vendor 5 | 6 | class LifecycleIssueRegistry : IssueRegistry() { 7 | 8 | override val issues = listOf(LifecycleMethodDetector.ISSUE) 9 | 10 | override val api: Int = com.android.tools.lint.detector.api.CURRENT_API 11 | 12 | override val vendor = Vendor( 13 | vendorName = "Mapbox", 14 | identifier = "com.mapbox.maps:lifecycle-lint", 15 | feedbackUrl = "https://github.com/mapbox/mapbox-maps-android/issues", 16 | contact = "https://github.com/mapbox/mapbox-maps-android" 17 | ) 18 | } -------------------------------------------------------------------------------- /plugin-lifecycle-lint-rules/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry: -------------------------------------------------------------------------------- 1 | com.mapbox.maps.lint.lifecycle.LifecycleIssueRegistry -------------------------------------------------------------------------------- /plugin-lifecycle/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-lifecycle/api/Release/metalava.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package com.mapbox.maps.plugin.lifecycle { 3 | 4 | public final class LifecycleUtils { 5 | method public static com.mapbox.maps.plugin.lifecycle.MapboxLifecyclePlugin getLifecycle(com.mapbox.maps.plugin.delegates.MapPluginProviderDelegate); 6 | } 7 | 8 | } 9 | 10 | -------------------------------------------------------------------------------- /plugin-lifecycle/api/plugin-lifecycle.api: -------------------------------------------------------------------------------- 1 | public final class com/mapbox/maps/plugin/lifecycle/LifecycleUtils { 2 | public static final synthetic fun createLifecyclePlugin ()Lcom/mapbox/maps/plugin/lifecycle/MapboxLifecyclePlugin; 3 | public static final fun getLifecycle (Lcom/mapbox/maps/plugin/delegates/MapPluginProviderDelegate;)Lcom/mapbox/maps/plugin/lifecycle/MapboxLifecyclePlugin; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /plugin-locationcomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/java/com/mapbox/maps/plugin/locationcomponent/LocationCompassCalibrationListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent 2 | 3 | /** 4 | * Callback to receive compass calibration events 5 | */ 6 | fun interface LocationCompassCalibrationListener { 7 | /** 8 | * Callback's invoked when compass needs to be calibrated. 9 | */ 10 | fun onCompassCalibrationNeeded() 11 | } -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/java/com/mapbox/maps/plugin/locationcomponent/animators/PuckPositionAnimator.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent.animators 2 | 3 | import androidx.annotation.RestrictTo 4 | import com.mapbox.geojson.Point 5 | import com.mapbox.maps.plugin.locationcomponent.OnIndicatorPositionChangedListener 6 | 7 | @RestrictTo(RestrictTo.Scope.LIBRARY) 8 | internal class PuckPositionAnimator(private val indicatorPositionChangedListener: OnIndicatorPositionChangedListener) : PuckAnimator(Evaluators.POINT) { 9 | 10 | override fun updateLayer(fraction: Float, value: Point) { 11 | locationRenderer?.setLatLng(value) 12 | indicatorPositionChangedListener.onIndicatorPositionChanged(value) 13 | } 14 | } -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/java/com/mapbox/maps/plugin/locationcomponent/utils/ExpectedUtils.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent.utils 2 | 3 | import com.mapbox.bindgen.Expected 4 | import com.mapbox.maps.MapboxLocationComponentException 5 | 6 | /** 7 | * Internal function to check if a method invoke on Value succeeded, throws exception if not. 8 | */ 9 | @JvmSynthetic 10 | internal inline fun Expected.take(): T { 11 | this.also { 12 | it.error?.let { err -> 13 | throw MapboxLocationComponentException(err) 14 | } 15 | it.value?.let { v -> 16 | return v 17 | } 18 | } 19 | throw MapboxLocationComponentException("Error in parsing expression.") 20 | } -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-hdpi/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-hdpi/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-hdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-hdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-mdpi/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-mdpi/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-mdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-mdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xhdpi/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xhdpi/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xhdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xhdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xxhdpi/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xxhdpi/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xxhdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xxhdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable-xxxhdpi/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_info_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_info_icon_default.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_info_icon_selected.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_mylocation_bg_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_mylocation_icon_bearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable/mapbox_mylocation_icon_bearing.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_mylocation_icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-locationcomponent/src/main/res/drawable/mapbox_mylocation_icon_default.png -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_popup_window_transparent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 12 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_user_bearing_icon.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_user_icon.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_user_icon_shadow.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 8 | 11 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_user_icon_stale.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/drawable/mapbox_user_stroke_icon.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #5F5F5F 4 | #7D7F80 5 | #1E8CAB 6 | 7 | #0590E2 8 | #A1B0C0 9 | 10 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18dp 4 | 25dp 5 | 400dp 6 | 7 | -------------------------------------------------------------------------------- /plugin-locationcomponent/src/test/java/com/mapbox/maps/util/MockKExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.util 2 | 3 | import io.mockk.MockKMatcherScope 4 | 5 | // vararg capture isn't implemented, here's a workaround to collect it https://github.com/mockk/mockk/issues/432 6 | inline fun MockKMatcherScope.captureVararg( 7 | capture: MutableCollection 8 | ) = varargAll { 9 | capture.add(it) 10 | true 11 | } -------------------------------------------------------------------------------- /plugin-logo/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable-hdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable-hdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable-mdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable-mdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable-xhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable-xhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/drawable/mapbox_logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapbox/mapbox-maps-android/a3eb625ccdc78b328e0aa39b44bc6959ec8a62ed/plugin-logo/src/main/res/drawable/mapbox_logo_icon.png -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | يجب أن تظل العلامة النصية لشعار Mapbox ممكنة وفقًا لشروط الخدمة الخاصة بنا. راجع https://www.mapbox.com/legal/tos لمزيد من التفاصيل. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-be/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Лагатып Mapbox павінен заставацца бачным у адпаведнасці з нашымі Ўмовамі абслугоўвання. Дадатковая інфармацыя: https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Словната марка на логото на Mapbox трябва да остане активирана в съответствие с нашите Условия за ползване. Вижте https://www.mapbox.com/legal/tos за повече подробности. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | El logotip de Mapbox ha de romandre activat d\'acord amb les nostres Condicions del servei. Consulteu https://www.mapbox.com/legal/tos per obtenir més informació. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Slovní znak loga Mapbox musí zůstat aktivní v souladu s našimi smluvními podmínkami. Další podrobnosti najdete na https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapbox-logoets ordmærke skal forblive aktiveret i overensstemmelse med vores servicevilkår. Se https://www.mapbox.com/legal/tos for flere detaljer. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Die Mapbox-Logo-Wortmarke muss gemäß unseren Nutzungsbedingungen aktiviert bleiben. Weitere Informationen finden Sie unter https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | El logotipo de Mapbox debe permanecer habilitado de acuerdo con nuestros Términos de servicio. Consulte https://www.mapbox.com/legal/tos para obtener más detalles. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Le logo du logo Mapbox doit rester activé conformément à nos conditions d\'utilisation. Voir https://www.mapbox.com/legal/tos pour plus de détails. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | O logotipo de Mapbox debe permanecer activado de acordo coas nosas Condicións de servizo. Consulte https://www.mapbox.com/legal/tos para obter máis detalles. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Il marchio denominativo del logo Mapbox deve rimanere abilitato in conformità con i nostri Termini di servizio. Vedi https://www.mapbox.com/legal/tos per maggiori dettagli. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | סימן המילים הלוגו של Mapbox חייב להישאר מופעל בהתאם לתנאים וההגבלות שלנו. ראה https://www.mapbox.com/legal/tos לפרטים נוספים. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapbox ロゴのワードマークは、サービス利用規約に従って有効にしておく必要があります。詳細については、https://www.mapbox.com/legal/tos を参照してください。 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapbox 로고 워드마크는 서비스 약관에 따라 활성화된 상태로 유지되어야 합니다. 자세한 내용은 https://www.mapbox.com/legal/tos를 참조하세요. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Žodis „Mapbox“ logotipas turi likti įjungtas pagal mūsų paslaugų teikimo sąlygas. Daugiau informacijos rasite adresu https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Het Mapbox-logowoordmerk moet ingeschakeld blijven in overeenstemming met onze Servicevoorwaarden. Zie https://www.mapbox.com/legal/tos voor meer details. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-no/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapbox-logoens ordmerke må forbli aktivert i samsvar med våre vilkår for bruk. Se https://www.mapbox.com/legal/tos for mer informasjon. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Znak słowny logo Mapbox musi pozostać włączony zgodnie z naszymi Warunkami świadczenia usług. Więcej szczegółów można znaleźć na stronie https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | A marca do logotipo Mapbox deve permanecer habilitada de acordo com nossos Termos de Serviço. Consulte https://www.mapbox.com/legal/tos para obter mais detalhes. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Логотип Mapbox должен оставаться видимым в соответствии с нашими Условиями обслуживания. Дополнительная информация: https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Mapbox-logotypens ordmärke måste förbli aktiverat i enlighet med våra användarvillkor. Se https://www.mapbox.com/legal/tos för mer information. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Словесний знак логотипа Mapbox має залишатися ввімкненим відповідно до наших Умов використання. Додаткову інформацію див. на сторінці https://www.mapbox.com/legal/tos. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Nhãn từ biểu tượng Mapbox phải luôn được bật theo Điều khoản dịch vụ của chúng tôi. Xem https://www.mapbox.com/legal/tos để biết thêm chi tiết. 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 根据我们的服务条款,Mapbox 徽标字标必须保持启用状态。有关更多详细信息,请参阅 https://www.mapbox.com/legal/tos。 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 根據我們的服務條款,Mapbox 標誌字標必須保持啟用。有關更多詳細信息,請參閱 https://www.mapbox.com/legal/tos。 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 根據我們的服務條款,Mapbox 標誌字標必須保持啟用。有關更多詳細信息,請參閱 https://www.mapbox.com/legal/tos。 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 根据我们的服务条款,Mapbox 徽标字标必须保持启用状态。有关更多详细信息,请参阅 https://www.mapbox.com/legal/tos。 3 | 4 | -------------------------------------------------------------------------------- /plugin-logo/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | The Mapbox logo wordmark must remain enabled in accordance with our Terms of Service. See https://www.mapbox.com/legal/tos for more details. 3 | -------------------------------------------------------------------------------- /plugin-overlay/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-overlay/api/Release/metalava.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package com.mapbox.maps.plugin.overlay { 3 | 4 | public final class MapOverlayUtils { 5 | method public static com.mapbox.maps.plugin.overlay.MapOverlayPlugin getOverlay(com.mapbox.maps.plugin.delegates.MapPluginProviderDelegate); 6 | } 7 | 8 | } 9 | 10 | -------------------------------------------------------------------------------- /plugin-overlay/api/plugin-overlay.api: -------------------------------------------------------------------------------- 1 | public final class com/mapbox/maps/plugin/overlay/MapOverlayUtils { 2 | public static final synthetic fun createOverlayPlugin ()Lcom/mapbox/maps/plugin/overlay/MapOverlayPlugin; 3 | public static final fun getOverlay (Lcom/mapbox/maps/plugin/delegates/MapPluginProviderDelegate;)Lcom/mapbox/maps/plugin/overlay/MapOverlayPlugin; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /plugin-scalebar/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /plugin-scalebar/src/test/java/com/mapbox/maps/plugin/scalebar/ShadowProjection.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.scalebar; 2 | 3 | import com.mapbox.maps.Projection; 4 | 5 | import org.robolectric.annotation.Implementation; 6 | import org.robolectric.annotation.Implements; 7 | 8 | /** 9 | * To avoid calling native method of Projection, this shadow Projection 10 | * will be used for the Robolectric unit tests. 11 | */ 12 | @Implements(Projection.class) 13 | public class ShadowProjection { 14 | @Implementation 15 | public static double getMetersPerPixelAtLatitude(double latitude, double zoom) { 16 | return 0.0; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /plugin-viewport/api/Release/metalava.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package com.mapbox.maps.plugin.viewport { 3 | 4 | public final class ViewportUtils { 5 | method public static com.mapbox.maps.plugin.viewport.ViewportPlugin getViewport(com.mapbox.maps.plugin.delegates.MapPluginProviderDelegate); 6 | } 7 | 8 | } 9 | 10 | package com.mapbox.maps.plugin.viewport.transition { 11 | 12 | public final class TransitionUtilsKt { 13 | } 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /plugin-viewport/api/plugin-viewport.api: -------------------------------------------------------------------------------- 1 | public final class com/mapbox/maps/plugin/viewport/ViewportUtils { 2 | public static final synthetic fun createViewportPlugin ()Lcom/mapbox/maps/plugin/viewport/ViewportPlugin; 3 | public static final fun getViewport (Lcom/mapbox/maps/plugin/delegates/MapPluginProviderDelegate;)Lcom/mapbox/maps/plugin/viewport/ViewportPlugin; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /plugin-viewport/src/main/kotlin/com/mapbox/maps/plugin/viewport/util/ViewportTelemetryEvents.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.viewport.util 2 | 3 | import com.mapbox.maps.module.TelemetryEvent 4 | 5 | internal object ViewportTelemetryEvents { 6 | val stateFollowPuck = TelemetryEvent.create("viewport/state/follow-puck") 7 | val stateOverview = TelemetryEvent.create("viewport/state/overview") 8 | val stateTransition = TelemetryEvent.create("viewport/state/transition") 9 | } -------------------------------------------------------------------------------- /plugin-viewport/src/test/kotlin/com/mapbox/maps/plugin/viewport/ViewportTestConstants.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.viewport 2 | 3 | internal const val TRANSITION_UTILS = "com.mapbox.maps.plugin.viewport.transition.TransitionUtilsKt" 4 | internal const val CAMERA_ANIMATIONS_UTILS = "com.mapbox.maps.plugin.animation.CameraAnimationsUtils" 5 | internal const val LOCATION_COMPONENT_UTILS = "com.mapbox.maps.plugin.locationcomponent.LocationComponentUtils" -------------------------------------------------------------------------------- /scripts/checksum.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | source scripts/checksum-base.sh 3 | 4 | add_files . build.gradle.kts 5 | add_files ./gradle/libs.versions.toml 6 | add_files ./gradle/wrapper gradle-wrapper.properties 7 | 8 | generate_checksums 9 | -------------------------------------------------------------------------------- /scripts/clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eo pipefail 2 | rm -rf ./gradle/configuration.gradle \ 3 | ./app/build \ 4 | ./app/.cxx \ 5 | ./vendor/mapbox-gl-native-internal/internal/platform/android/sdk/.cxx \ 6 | ./vendor/mapbox-gl-native-internal/internal/platform/android/sdk/build \ 7 | ./vendor/mapbox-gl-native-internal/internal/vendor/common/platform/android/common/.cxx \ 8 | ./vendor/mapbox-gl-native-internal/internal/vendor/common/platform/android/common/build 9 | # Clean all build files for plugins / modules / sdk / extensions 10 | for SUBDIR in $(ls -d */| grep -E 'plugin|extension|module|sdk') 11 | do 12 | rm -rf ./$SUBDIR/build ./$SUBDIR/.cxx 13 | done -------------------------------------------------------------------------------- /scripts/install-pre-commit/install-pre-commit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # 4 | # This installs a pre-commit that runs secret-shield. 5 | # 6 | 7 | cp scripts/install-pre-commit/pre-commit.sh ././.git/hooks/pre-commit 8 | chmod +x ././.git/hooks/pre-commit -------------------------------------------------------------------------------- /scripts/install-pre-commit/pre-commit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # 4 | # This file should be copied to .git/hooks/pre-commit by running `scripts/install-pre-commit/install-pre-commit.sh` 5 | # 6 | 7 | if [ -z `which secret-shield` ]; then 8 | echo 'Please install secret-shield globally. https://github.com/mapbox/secret-shield'; exit; 9 | fi 10 | 11 | secret-shield --pre-commit -C verydeep --enable "Mapbox Public Key" --disable "High-entropy base64 string" "Short high-entropy string" "Long high-entropy string" -------------------------------------------------------------------------------- /scripts/merge-gradle-dependency-output.py: -------------------------------------------------------------------------------- 1 | import glob 2 | 3 | 4 | def add_content(file_name): 5 | with open(file_name) as f: 6 | data = f.read() 7 | return data 8 | 9 | 10 | result = "" 11 | files = glob.glob('*/build/dependencyUpdates/report.txt') 12 | for file_name in files: 13 | result += add_content(file_name) 14 | 15 | with open('merged_report.txt', 'w') as f: 16 | f.write(result) 17 | -------------------------------------------------------------------------------- /scripts/sanity-test/exclude-sanity-test-gen.json: -------------------------------------------------------------------------------- 1 | [ 2 | 3 | ] -------------------------------------------------------------------------------- /sdk-base/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/MapInteraction.java: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * Base class for interactions. Should not be used directly. 7 | */ 8 | public abstract class MapInteraction { 9 | 10 | /** 11 | * Actually initialized in constructor so should never be nullable. 12 | */ 13 | @NonNull 14 | Interaction coreInteraction; 15 | } 16 | -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/MapLoadingErrorDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | import androidx.annotation.RestrictTo 4 | 5 | /** 6 | * For internal usage. 7 | */ 8 | @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX) 9 | fun interface MapLoadingErrorDelegate { 10 | 11 | /** 12 | * Send [MapLoadingError]. 13 | */ 14 | fun sendMapLoadingError(error: MapLoadingError) 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/MapboxExperimental.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | /** 4 | * Annotation class to mark API as experimental. 5 | */ 6 | @RequiresOptIn( 7 | level = RequiresOptIn.Level.WARNING, 8 | message = "This API is experimental. It may be changed in the future without notice." 9 | ) 10 | @Retention(AnnotationRetention.BINARY) 11 | @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) 12 | @MustBeDocumented 13 | annotation class MapboxExperimental -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/MapboxLifecycleObserver.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps 2 | 3 | /** 4 | * MapboxLifecycleObserver interface defines the lifecycle events that needed by MapView. 5 | */ 6 | interface MapboxLifecycleObserver { 7 | /** 8 | * Called to start rendering 9 | */ 10 | fun onStart() 11 | 12 | /** 13 | * Called to stop rendering 14 | */ 15 | fun onStop() 16 | 17 | /** 18 | * Called to dispose the renderer 19 | */ 20 | fun onDestroy() 21 | 22 | /** 23 | * Called to reduce memory use 24 | */ 25 | fun onLowMemory() 26 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/exception/WorkerThreadException.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.exception 2 | 3 | import java.lang.RuntimeException 4 | 5 | /** 6 | * Exception thrown when a worker thread calls in a main thread only class. 7 | */ 8 | class WorkerThreadException : RuntimeException( 9 | """ 10 | The exception that is thrown when an application attempts to 11 | perform a map operation on a worker thread. 12 | """.trimIndent() 13 | ) -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/extension/observable/model/Error.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.observable.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | /** 6 | *The data class for error in Observer 7 | */ 8 | @Deprecated( 9 | message = "This data class is deprecated, and will be removed in next major release.", 10 | replaceWith = ReplaceWith("ResourceRequestError"), 11 | level = DeprecationLevel.WARNING 12 | ) 13 | data class Error( 14 | /** 15 | * "reason" property 16 | */ 17 | @SerializedName("reason") val reason: ResponseErrorReason, 18 | /** 19 | * "message" property 20 | */ 21 | @SerializedName("message") val message: String 22 | ) -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/extension/observable/model/RequestPriority.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.extension.observable.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | /** 6 | * Describes priority for request object. 7 | * @param value String value of this enum 8 | */ 9 | @Deprecated( 10 | message = "This enum class is deprecated, and will be removed in next major release.", 11 | replaceWith = ReplaceWith("RequestPriorityType"), 12 | level = DeprecationLevel.WARNING 13 | ) 14 | enum class RequestPriority(val value: String) { 15 | /** Regular priority. */ 16 | @SerializedName("regular") 17 | REGULAR("regular"), 18 | 19 | /** low priority. */ 20 | @SerializedName("low") 21 | LOW("low") 22 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/interactions/FeatureStateCallback.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.interactions 2 | 3 | import com.mapbox.maps.MapboxExperimental 4 | 5 | /** 6 | * Callback for `MapboxMap.getFeatureState`. 7 | */ 8 | @MapboxExperimental 9 | fun interface FeatureStateCallback { 10 | 11 | /** 12 | * Triggered when `MapboxMap.getFeatureState` is done. 13 | * 14 | * Note: this callback is not triggered if `MapboxMap.getFeatureState` was canceled 15 | * or an error occurred. 16 | */ 17 | fun onFeatureState(state: FS) 18 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/ContextBinder.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | 6 | /** 7 | * Interface to bind a View and underlying context 8 | */ 9 | fun interface ContextBinder { 10 | /** 11 | * Bind the ViewPlugin with current map context. This will create a View that 12 | * will be added to the MapView. 13 | * 14 | * @param context The hosting context 15 | * @param attrs parent attributes 16 | * @param pixelRatio the pixel ratio of the device 17 | * @return View that will be added to the MapView 18 | */ 19 | fun bind(context: Context, attrs: AttributeSet?, pixelRatio: Float) 20 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/InvalidPluginConfigurationException.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | /** 4 | * Exception thrown when a plugin configuration is invalid. 5 | */ 6 | class InvalidPluginConfigurationException(exceptionMessage: String) : Exception(exceptionMessage) -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/LifecyclePlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | /** 4 | * Interface for plugins interacting with the lifecycle of the hosting context. 5 | */ 6 | interface LifecyclePlugin { 7 | 8 | /** 9 | * Called whenever activity's/fragment's lifecycle is entering a "started" state. 10 | */ 11 | fun onStart() {} 12 | 13 | /** 14 | * Called whenever activity's/fragment's lifecycle is entering a "stopped" state. 15 | */ 16 | fun onStop() {} 17 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/MapPlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | import com.mapbox.maps.plugin.delegates.MapDelegateProvider 4 | 5 | /** 6 | * Parent definition of all Map plugins. 7 | */ 8 | interface MapPlugin { 9 | /** 10 | * Called when the plugin is first added to the map. 11 | */ 12 | fun initialize() { 13 | // optional 14 | } 15 | 16 | /** 17 | * Called when the map is destroyed. Should be used to cleanup plugin resources for that map. 18 | */ 19 | fun cleanup() { 20 | // optional 21 | } 22 | 23 | /** 24 | * Provides all map delegate instances. 25 | */ 26 | fun onDelegateProvider(delegateProvider: MapDelegateProvider) { 27 | // optional 28 | } 29 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/MapSizePlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | /** 4 | * Plugin interface invoked when the size of map changes. 5 | */ 6 | interface MapSizePlugin { 7 | 8 | /** 9 | * Invoked when MapView's width and height have changed. 10 | * @param width the width of mapView 11 | * @param height the height of mapView 12 | */ 13 | fun onSizeChanged(width: Int, height: Int) { 14 | // optional 15 | } 16 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/MapStyleObserverPlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin 2 | 3 | import com.mapbox.maps.MapboxStyleManager 4 | 5 | /** 6 | * Interface for plugins need to be aware of the style change event. 7 | */ 8 | interface MapStyleObserverPlugin { 9 | /** 10 | * Called when a new Style is loaded. 11 | */ 12 | fun onStyleChanged(style: MapboxStyleManager) 13 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/animation/CameraAnimatorChangeListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.animation 2 | 3 | /** 4 | * Interface to get updated non-nullable animator values. 5 | */ 6 | fun interface CameraAnimatorChangeListener { 7 | 8 | /** 9 | * Called when new animator value has arrived different from previous one. 10 | * 11 | * @param updatedValue value when given camera property has changed. 12 | */ 13 | fun onChanged(updatedValue: T) 14 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/animation/CameraAnimatorNullableChangeListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.animation 2 | 3 | /** 4 | * Interface to get updated animator values including nulls. 5 | */ 6 | fun interface CameraAnimatorNullableChangeListener { 7 | 8 | /** 9 | * Called when new animator value has arrived different from previous one. 10 | * 11 | * @param updatedValue value when given camera property has changed. 12 | */ 13 | fun onChanged(updatedValue: T?) 14 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/AnnotationOptions.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | import com.mapbox.geojson.Geometry 4 | 5 | /** 6 | * Options interface for building annotations 7 | */ 8 | fun interface AnnotationOptions> { 9 | /** 10 | * Build an annotation 11 | * 12 | * @param id: the id for this annotation 13 | * @param annotationManager: the annotationManager that manage this annotation 14 | * 15 | * @return the annotation that is built 16 | */ 17 | fun build(id: String, annotationManager: AnnotationManager): T 18 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/AnnotationType.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Enum class for annotation types 5 | */ 6 | enum class AnnotationType( 7 | /** The value of type */ 8 | var value: Int 9 | ) { 10 | /** PolygonAnnotation type */ 11 | PolygonAnnotation(1), 12 | 13 | /** PolylineAnnotation type */ 14 | PolylineAnnotation(2), 15 | 16 | /** PointAnnotation type */ 17 | PointAnnotation(3), 18 | 19 | /** CircleAnnotation type */ 20 | CircleAnnotation(4), 21 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/OnAnnotationClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Generic interface definition of a callback to be invoked when an annotation has been clicked. 5 | * 6 | * @param generic parameter extending from Annotation 7 | */ 8 | fun interface OnAnnotationClickListener> { 9 | /** 10 | * Called when an annotation has been clicked 11 | * 12 | * @param annotation the annotation clicked. 13 | * @return True if this click should be consumed and not passed further to other listeners 14 | * registered afterwards, false otherwise. 15 | */ 16 | fun onAnnotationClick(annotation: T): Boolean 17 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/OnAnnotationLongClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Generic fun interface definition of a callback to be invoked when an annotation has been long clicked. 5 | * 6 | * @param generic parameter extending from Annotation 7 | */ 8 | fun interface OnAnnotationLongClickListener> { 9 | /** 10 | * Generic fun interface definition of a callback to be invoked when an annotation has been long clicked. 11 | * 12 | * @param generic parameter extending from Annotation 13 | */ 14 | fun onAnnotationLongClick(annotation: T): Boolean 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/OnClusterClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Interface definition of a callback to be invoked when cluster with annotations has been clicked. 5 | */ 6 | fun interface OnClusterClickListener { 7 | /** 8 | * Called when an cluster has been clicked. 9 | * 10 | * @param cluster the clicked cluster represented by [ClusterFeature]. 11 | * @return True if this click should be consumed and not passed further to other listeners 12 | * registered afterwards, false otherwise. 13 | */ 14 | fun onClusterClick(cluster: ClusterFeature): Boolean 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/annotation/OnClusterLongClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.annotation 2 | 3 | /** 4 | * Interface definition of a callback to be invoked when cluster with annotations has been long clicked. 5 | **/ 6 | fun interface OnClusterLongClickListener { 7 | /** 8 | * Called when an cluster has been long clicked. 9 | * 10 | * @param cluster the long clicked cluster represented by [ClusterFeature]. 11 | * @return True if this click should be consumed and not passed further to other listeners 12 | * registered afterwards, false otherwise. 13 | */ 14 | fun onClusterLongClick(cluster: ClusterFeature): Boolean 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/attribution/AttributionDialogManager.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.attribution 2 | 3 | import com.mapbox.maps.plugin.delegates.MapAttributionDelegate 4 | 5 | /** 6 | * Interface for attribution dialog manager. This interface can be used to implement your 7 | * own AttributionDialogManager to replace the default attribution dialog. 8 | */ 9 | interface AttributionDialogManager { 10 | 11 | /** 12 | * Invoked when the map attribution should be shown to the end user 13 | * 14 | */ 15 | fun showAttribution(mapAttributionDelegate: MapAttributionDelegate) 16 | 17 | /** 18 | * Invoked when the hosting Activity#onStop is called 19 | */ 20 | fun onStop() 21 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/attribution/OnAttributionClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.attribution 2 | 3 | /** 4 | * Listener to get OnClick event on the view. 5 | */ 6 | fun interface OnAttributionClickListener { 7 | 8 | /** 9 | * Invoked when the attribution is clicked. 10 | */ 11 | fun onAttributionClick() 12 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/compass/OnCompassClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.compass 2 | 3 | /** 4 | * Listener to get OnClick event on the view. 5 | */ 6 | fun interface OnCompassClickListener { 7 | 8 | /** 9 | * Invoked when the compass is clicked. 10 | */ 11 | fun onCompassClick() 12 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/delegates/MapPluginProviderDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.delegates 2 | 3 | import com.mapbox.maps.plugin.MapPlugin 4 | 5 | /** 6 | * Definition of a map plugin provider delegate. 7 | */ 8 | interface MapPluginProviderDelegate { 9 | /** 10 | * Get the plugin instance. 11 | * 12 | * @param id plugin id 13 | * @return created plugin instance or null if no plugin is found for given id. 14 | */ 15 | fun getPlugin(id: String): T? 16 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/locationcomponent/OnIndicatorAccuracyRadiusChangedListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent 2 | 3 | /** 4 | * Listener that gets invoked when indicator accuracy radius changes. 5 | */ 6 | fun interface OnIndicatorAccuracyRadiusChangedListener { 7 | /** 8 | * This method is called on each accuracy radius change of the location indicator, including each animation frame. 9 | * 10 | * @param radius indicator's accuracy radius 11 | */ 12 | fun onIndicatorAccuracyRadiusChanged(radius: Double) 13 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/locationcomponent/OnIndicatorBearingChangedListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent 2 | 3 | /** 4 | * Listener that gets invoked when indicator bearing changes. 5 | */ 6 | fun interface OnIndicatorBearingChangedListener { 7 | /** 8 | * This method is called on each bearing change of the location indicator, including each animation frame. 9 | * 10 | * @param bearing indicator's bearing 11 | */ 12 | fun onIndicatorBearingChanged(bearing: Double) 13 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/locationcomponent/OnIndicatorPositionChangedListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent 2 | 3 | import com.mapbox.geojson.Point 4 | 5 | /** 6 | * Listener that gets invoked when indicator position changes. 7 | */ 8 | fun interface OnIndicatorPositionChangedListener { 9 | /** 10 | * This method is called on each position change of the location indicator, including each animation frame. 11 | * 12 | * @param point indicator's position 13 | */ 14 | fun onIndicatorPositionChanged(point: Point) 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/locationcomponent/PuckLocatedAtPointListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.locationcomponent 2 | 3 | /** 4 | * Listener that gets invoked when the is location puck rendered on point validation finished. 5 | */ 6 | fun interface PuckLocatedAtPointListener { 7 | /** 8 | * This method is called when the is location puck rendered on point validation finished. 9 | * 10 | * @param isPuckLocatedAtPoint true if the given point is on the rendered location puck, false otherwise. 11 | */ 12 | fun onResult(isPuckLocatedAtPoint: Boolean) 13 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/logo/LogoPlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.logo 2 | 3 | import com.mapbox.maps.plugin.ViewPlugin 4 | import com.mapbox.maps.plugin.logo.generated.LogoSettingsInterface 5 | 6 | /** 7 | * Presenter interface for the logo. 8 | */ 9 | interface LogoPlugin : ViewPlugin, LogoSettingsInterface -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/overlay/MapOverlayCoordinatesProvider.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.overlay 2 | 3 | import com.mapbox.geojson.Point 4 | 5 | /** 6 | * Interface that should be implemented by users to provide all the coordinates that will shown 7 | * on MapView without covered by overlays. 8 | */ 9 | fun interface MapOverlayCoordinatesProvider { 10 | /** 11 | * Get all the coordinates that will shown on MapView 12 | * @return return the shown coordinates 13 | */ 14 | fun getShownCoordinates(): List 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/overlay/OnReframeFinished.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.overlay 2 | 3 | import com.mapbox.maps.CameraOptions 4 | 5 | /** 6 | * Interface invoked after reframe calculations are finished which provides valid [CameraOptions] object 7 | */ 8 | fun interface OnReframeFinished { 9 | /** 10 | * Callback method to return the [CameraOptions] object. 11 | * @param cameraOptions the [CameraOptions] that refame operation will apply. 12 | */ 13 | fun onReframeFinished(cameraOptions: CameraOptions?) 14 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/scalebar/ScaleBarPlugin.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.scalebar 2 | 3 | import com.mapbox.maps.plugin.MapSizePlugin 4 | import com.mapbox.maps.plugin.ViewPlugin 5 | import com.mapbox.maps.plugin.scalebar.generated.ScaleBarSettingsInterface 6 | 7 | /** 8 | * Presenter interface for the ScaleBar. 9 | */ 10 | interface ScaleBarPlugin : ViewPlugin, MapSizePlugin, ScaleBarSettingsInterface { 11 | /** 12 | * How many meters in each pixel. 13 | */ 14 | var distancePerPixel: Float 15 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/viewport/CompletionListener.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.viewport 2 | 3 | /** 4 | * A listener that's notified when the action is completed. 5 | */ 6 | fun interface CompletionListener { 7 | /** 8 | * Notifies the action is completed. 9 | * 10 | * Transition may end early if they fail or are interrupted(e.g. by another call to [ViewportPlugin.transitionTo] 11 | * or [ViewportPlugin.idle]). 12 | * 13 | * @param isFinished true if the transition ran to completion and false 14 | * if it was canceled or interrupted. 15 | */ 16 | fun onComplete(isFinished: Boolean) 17 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/plugin/viewport/state/ViewportStateDataObserver.kt: -------------------------------------------------------------------------------- 1 | package com.mapbox.maps.plugin.viewport.state 2 | 3 | import com.mapbox.maps.CameraOptions 4 | 5 | /** 6 | * Observer that gets notified whenever new viewport data is available. 7 | */ 8 | fun interface ViewportStateDataObserver { 9 | /** 10 | * Notifies that new data is available. 11 | * 12 | * @param cameraOptions The most recent [CameraOptions] from the [ViewportState]. 13 | * @return true if new data is needed and stay subscribed. returning false will unsubscribe from further data updates. 14 | */ 15 | fun onNewData(cameraOptions: CameraOptions): Boolean 16 | } -------------------------------------------------------------------------------- /sdk-base/src/main/java/com/mapbox/maps/util/CameraOptionsUtils.kt: -------------------------------------------------------------------------------- 1 | @file:JvmName("CameraOptionsUtils") 2 | 3 | package com.mapbox.maps.util 4 | 5 | import com.mapbox.maps.CameraOptions 6 | 7 | /** 8 | * Check whether given [CameraOptions] object is empty. 9 | */ 10 | val CameraOptions.isEmpty: Boolean 11 | get() { 12 | if (center != null) return false 13 | if (padding != null) return false 14 | if (anchor != null) return false 15 | if (zoom != null) return false 16 | if (bearing != null) return false 17 | if (pitch != null) return false 18 | 19 | return true 20 | } -------------------------------------------------------------------------------- /sdk-base/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------