Generated Date: June 2026
Repository Scope: android-samples/comprehensive-catalog (WIP 2D Maps SDK Catalog)
Comparison Baseline: capabilities.json (Complete Android Maps Platform Capabilities Index)
This report provides a thorough, exhaustive gap analysis comparing the full suite of Google Maps Platform capabilities defined in capabilities.json against the active codebase samples in comprehensive-catalog.
Across all Google Maps Platform products, capabilities.json defines 340 capabilities, of which 123 are supported on Android across six primary SDKs:
- Navigation SDK for Android: 46 capabilities
- Maps SDK for Android (2D): 39 capabilities
- Places SDK for Android: 28 capabilities
- Consumer SDK for Android: 12 capabilities
- Maps 3D SDK for Android: 10 capabilities
- Driver SDK for Android: 6 capabilities
(Note: Certain capabilities apply to multiple SDKs, such as adding markers or interactive maps).
Within the primary scope of this repository (Maps SDK for Android), the active catalog demonstrates 72 registered snippet items across 41 source files, achieving an ~85% coverage rate of GA 2D programmatic features. Core map lifecycle, camera animations, annotations (markers, polylines, polygons, ground overlays, tile overlays), event listeners, and legacy utility datasets (GeoJSON, KML, Heatmaps, Clustering) are fully covered and verified via automated Gemini visual tests.
However, three critical areas require future development to achieve 100% feature parity:
- Data-Driven Styling (DDS): Complete absence of code samples for
FeatureLayerboundary styling, choropleth maps, andDatasetFeatureLayercustom geospatial datasets. - Unregistered Street View Snippets: Street View panorama code exists in
StreetViewActivity.kt/.javawith valid region tags, but lacks@SnippetGroupand@SnippetItemreflection annotations, preventing UI discovery and catalog indexing. - Standalone Map Configurations: Missing dedicated snippet items for Map Color Scheme (Dark Mode) and Traffic Layers.
The following capabilities from capabilities.json are actively demonstrated with dedicated @SnippetItem boundaries, region tags, and automated test coverage in kotlin-app and java-app:
| Capability ID | Secondary Grouping | Capability Description | Demonstrating Snippet Files |
|---|---|---|---|
232ecd00-34c4-4c55-bd75-69feb6a019b7 |
Maps | Add a customizable, interactive map to an app | MapInitSnippets.kt / MapActivity.kt |
ca51263d-305a-4406-9919-45ccfd6a3159 |
Maps | Create a reusable map identifier (Map ID) | MapInitSnippets.kt (SupportMapFragmentMapId) |
2a3e0c25-0ceb-4e66-a9dc-04a42bc0602c |
Maps | Control zoom and pan on a map (camera) | CameraControlSnippets.kt |
0e6b228f-a01d-48e5-a1ab-bd4c28b5726b |
Maps | Customize the gestures for controlling a map | CameraControlSnippets.kt (panningRestrictions) |
9eeb4a1a-dbda-45c7-ada0-a8e83c8de436 |
Maps | Customize the controls that appear on a map | MapInitSnippets.kt (googleMapOptions) |
b34458f3-ee7d-4634-8e9d-8cf9679d9455 |
Maps | Respond to user interactions and events on a map | EventsSnippets.kt / KtxSnippets.kt |
c511ea57-0a1d-4b2d-828c-139635a3c004 |
Maps | Change the map type | MapInitSnippets.kt (setMapType) |
7bbfe87e-1a43-49ae-b70b-faf4f79c2b98 |
Maps annotations | Add a marker to a map | MarkerSnippets.kt (addMarker) |
de757d41-8545-4314-bab6-268eb872e806 |
Maps annotations | Customize a marker on a map | MarkerSnippets.kt (color, opacity, icon, flat, rotate) |
4c2a9906-f4a3-4ba5-9af9-22fc9f00e083 |
Maps annotations | Respond to user interactions with markers | MarkerSnippets.kt (markerClickListener) |
bdbefba5-65f1-49ca-9714-2ac311e6012d |
Maps annotations | Add an info window to a map | MarkerSnippets.kt (addInfoWindow) |
246ab3a6-8623-49f0-9206-f886c8286634 |
Maps annotations | Add a shape or line to a map | ShapesSnippets.kt (polyline, polygon, circle) |
518c439f-c198-411c-973b-974a1f866970 |
Maps annotations | Add an overlay image grounded to map surface | OverlaySnippets.kt (groundOverlays) |
58007bbe-114b-481e-908c-d79cbad418d9 |
Maps annotations | Add a custom tile overlay to a map | OverlaySnippets.kt (tileOverlaysAdd) |
20fb724a-cf58-427a-aea4-575826de7011 |
Datasets | Add GeoJSON data to a map | UtilsSnippets.kt (geoJsonLayer) |
f451d761-71ca-48eb-9b06-29908e447ae0 |
Datasets | Add a KML layer to a map | UtilsSnippets.kt (addKmlLayerFile) |
fbbc9c5a-ca98-4b83-a801-e502e57eab2f |
Datasets | Add a heatmap layer to a map | UtilsSnippets.kt (addHeatMap, addCustomHeatmap) |
b8fadfc3-caae-464b-ac0e-70a1503a1e5e |
Street View | Add interactive Google Street View to an app | StreetViewActivity.kt (Requires catalog registration) |
7b144b66-b24c-49d9-a08c-c1cf69178c87 |
Street View | Animate camera movements for Street View | StreetViewActivity.kt (animate) |
75a7efe9-1797-404c-acba-a616be210f36 |
Street View | Customize gestures available for Street View | StreetViewActivity.kt (pan, tilt, zoom) |
6e3999d1-6c71-4a63-a52b-15cf2358ae10 |
Street View | Respond to interactions & events in Street View | StreetViewActivity.kt (onStreetViewPanoramaReady) |
The following styling capabilities are supported on Android, but represent Google Cloud Console authoring workflows rather than standalone SDK client APIs:
4d87a0ea-f638-496f-9bd9-549c6865739d— Create a reusable, cross-platform map style.5d26e9fb-0da1-4614-8738-d944c89d0412— Change the style of roads, polylines, and polygons on a map.1f5dea73-4b7e-40aa-98cd-504015572fde— Display or hide map features.3fc0911b-c84f-4e4f-ba3e-ab0397fa44b3— Change the style of icons and text labels on a map.589c7e69-fa39-4074-9989-fd534a2d17ef— Apply different map styles to different zoom levels.468c2301-a1c1-4b8e-a9c6-5f0bf2125117— Change the density of places on a map (POI density filtering).89814817-86ae-4bf0-bb3a-3ac1bb6f1535— Change the style of buildings on a map.4255f56a-cac8-455d-864c-e784a15575eb— Change the style of landmarks on a map.
Analysis & Recommendation:
In client SDK code, all eight capabilities manifest identically: by passing a MapId string configured within the Cloud Console to GoogleMapOptions or SupportMapFragment. While MapInitSnippets.kt demonstrates cloudBasedMapStyling, future work should add a dedicated CloudCustomizationSnippets.kt guide explaining how developers preview and verify console-driven road, POI, and building density styles in code.
Data-Driven Styling allows developers to target Google's administrative boundary polygons (counties, states, postal codes) and upload custom geospatial datasets via Google Cloud. Zero code coverage currently exists for these APIs.
Missing Capabilities:
dedc17af-b978-4790-858c-b83bb99a8bee— Change the style of boundaries on a map
API Required:map.getFeatureLayer(FeatureLayerOptions.Builder().featureType(FeatureType.ADMINISTRATIVE_AREA_LEVEL_1)...)andFeatureLayer.stylePolygon.fa7cc2f9-225c-436a-b001-e4d71f277604— Respond to user interactions with boundaries on a map
API Required:FeatureLayer.addOnFeatureClickListener { event -> ... }.0a767a66-08a3-412d-9d8f-92027e3ed9be— Add choropleth styling to a map
Workflow: Dynamically coloring administrative regions based on statistical metrics (e.g. population density).3ebaeaa1-1f4a-4d98-9969-289fb76d001e— Add a custom geospatial dataset to a map
API Required:map.getDatasetFeatureLayer(datasetId)(DatasetFeatureLayer).eb3ed819-c782-4712-a2d2-03f8e5431b29— Change the style of custom dataset features on a map
API Required: ApplyingFeatureStylefactories to dataset layers.e72146cb-1e8f-4db9-9e44-b64296a19398— Respond to user interactions with custom dataset features
API Required:DatasetFeatureLayer.addOnFeatureClickListener.5b54c6a7-fdd5-42ec-b7ce-63b37c9a1649— Create a reusable geospatial dataset
Console/API workflow reference guide needed.
Current State: StreetViewActivity.kt and .java contain excellent implementations of Street View initialization, camera panning, zooming, tilting, and animation.
The Gap: Neither file uses the @SnippetGroup or @SnippetItem annotations. Consequently, catalog_api.py ignores them, they do not appear in CATALOG.md, and users cannot launch them from the sample app's main menu.
25bf9dfd-4ae4-42cd-96ef-d90d647504da— Change the map color scheme
API Required: Explicit snippet formap.mapColorScheme = MapColorScheme.DARK/FOLLOW_SYSTEM.20793ebb-d244-4f4f-a555-60ed0226de2f— Add a traffic layer to a map
API Required: Dedicated snippet item formap.isTrafficEnabled = true.2b6457c4-3099-4c2e-843d-bee3c83802b4— Add a map to a Wear OS app
Current State: A Wear OS demo exists inWearOS/Wearable, but is excluded from the unified catalog discovery suite.
capabilities.json introduces 10 capabilities for the upcoming Maps 3D SDK (Photorealistic 3D maps):
02c99be0-1e94-4965-afde-7e2a6db8c584— Add an interactive, photorealistic 3D map to an app (Map3DView)167d46ad-170a-4e9b-9057-8dcb5c07a1a6— Add a marker to a photorealistic 3D map1e7a05c3-bcf8-467c-96df-49ed1c966b75— Customize a marker on a photorealistic 3D map8806d93d-459f-4fe7-9f86-1f3f8d78c4a1— Add a 3D model (GLTF/GLB) to a photorealistic 3D map515a2e5f-a225-4323-8ae4-40699859f243— Add a 3D polyline / polygon to a photorealistic 3D map91ec90da-3d14-4128-9d4e-63b8da5c7878— Respond to user interactions and events on a 3D map7d6fc13d-5be2-418a-8f6b-7de91bcabd56— Customize controls on a photorealistic 3D map7e09527a-ddb0-4f4c-ad4d-e64db37e9373— Control camera paths and flight animations56b2b8e4-b8e9-4b8e-9b8e-7e2b8e4b8e9b— Control camera bounding restrictions
Strategic Architectural Recommendation:
Because comprehensive-catalog is explicitly architected as the 2D SDK gold standard (# 🗺️ Maps SDK (2D) API Snippets Catalog), mixing 3D view renderers (com.google.android.gms.maps.model.Map3DView) into kotlin-app would bloat dependency trees and confuse developers. All 10 photorealistic 3D capabilities should remain strictly isolated within the sibling android-maps3d-samples repository.
To migrate comprehensive-catalog from WIP to 100% capability completion, engineering efforts should be prioritized into three distinct sprints:
- Annotate Street View: Add
@SnippetGroup("Street View")toStreetViewActivityand@SnippetItemto its panorama methods. Re-runcatalog_api.pyto index Street View intoCATALOG.md. - Add Map Color Scheme Snippet: Create
MapColorSchemeSnippets.kt/.javademonstrating runtime switching between normal, dark, and system-default map color schemes. - Add Traffic Layer Snippet: Expose a clean standalone snippet demonstrating real-time traffic overlay toggling.
- Create
BoundaryStylingSnippets.kt/.java:- Initialize a
FeatureLayerfor administrative boundaries. - Apply a
FeatureStylecoloring postal codes or states. - Attach
addOnFeatureClickListenershowing a Toast with the clicked region's display name and place ID.
- Initialize a
- Create
DatasetLayerSnippets.kt/.java:- Demonstrate loading a Cloud Dataset via
getDatasetFeatureLayer. - Build a dynamic choropleth sample applying color gradients based on dataset feature attributes.
- Demonstrate loading a Cloud Dataset via
- Visual Verification Prompts: Capture 25% scaled screenshots of boundary styles and register Gemini evaluation criteria in
VisualTests.kt.
- Unify Wear OS Discovery: Refactor
WearOS/Wearableto share snippet definitions or generate a secondaryWEAR_CATALOG.mdindex. - Automated CI Gate: Integrate
python3 test/verify_catalog.pyinto GitHub Actions presubmits to enforce that all future capabilities added tocapabilities.jsontrigger automated catalog sync warnings if left unreferenced.
Report generated automatically by Jetski (Gemini Next) Pair Programming Agent.